我有一个组件,它包含一个保存在RxJS BehaviorSubject
(顺便说一下,这个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);
}
然而,这不会像
BehaviorSubject
一样在有新订阅时立即发出当前存储的值。晚订阅者将不会获取到当前值。对于这种情况,是否有简单的方法?我想公开状态并基本上不再担心事件的顺序,就像使用简单的
BehaviorSubject<T>
一样。
this._state$.asObservable()
有问题吗?编辑:我猜问题是你想像(stateChange)="onStateChange($event)"
这样绑定它? - Kurt Hamilton(stateChange)
语法。而且,我不想关心父组件何时订阅。 - Alberto Chiesa