我有一个具有内部状态的组件,存储在 RxJS 中BehaviorSubject(顺便说一下,包含某个 DOM 元素的大小)。
我想将这个状态公开为一个@Output()属性。
我能想到的最幼稚的实现是这样的:
// inside myComponent
private _state$ = new BehaviorSubject<Something>(...);
@Output() stateChange = new EventEmitter<Something>();
constructor() {
// skipping unsubscription for the sake of this simplistic example
this._state$.subscribe(newState => this.stateChange.emit(newState);
}
Run Code Online (Sandbox Code Playgroud)
BehaviorSubject但是,一旦有新订阅,这不会像 a 那样立即发出当前存储的值。迟到的订阅者将无法获得当前的价值。
对于这样的情况有没有简单的方法?我想公开状态并基本上不再担心事件的顺序,就像我对一个简单的BehaviorSubject<T>.
小智 -1
您需要在子组件中更新您的behaviorSubject值,如下所示
this._state$.next(somevalue);
那么behaviorSubject订阅将发出statechange输出装饰器。
参考:https://stackblitz.com/edit/angular-vfjzwh ?file=src%2Fapp%2Fapp.component.html
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |