这是创建和使用行为主题的方法。
// component/class 1
item = new BehaviourSubject(null)
item$
constructor() {
this.item$ = this.item.asObservable()
/// and to get value from item$ we do
this.item$.subscribe(v => console.log(v));
}
现在,要传递另一个值给行为主体或触发更改,我们可以这样做:
// component/class 2
someObservable$.subscribe(value => {
this.item.next(value)
}
)
所以我的问题是,有没有一种方法可以传递上述值而不订阅someObservable$
?
像这样:
使可观察对象在行为主体内展开自身。
this.item.next(someObservable$)
// when I does this the item$ observable returns an observable wrapped inside another observable and not a real value.
有时候答案就是"不"。可观察对象不包含值。因此,你不能读取一个可观察对象的值,并在this.item.next(observable$)
这样的函数调用中使用它。你必须订阅一个观察者
当然你可以用一个行为主题来代替。行为主题包含当前值。
this.item.next(behaviorSubject$.value)
是可能的。