我的观察结果与此类似:
dropDownValue$: Observable<number> = Observable.of(-1);
然后我有另一个observable
我正在订阅
this.actions$.pipe(
ofAction(UpdateFormValue)
).subscribe((action: any) => {
this.dropDownValue$ = Observable.of(action.payload.value.data);
});
最后,我期待的dropDownValue$
我期待从上面的subscibe
区块获得新值,但是没有任何事情发生,没有新的价值被收到。
this.dropDownValue$.subscribe((data) => {
console.log(data);
});
我做错了什么?
反正有没有BehaviorSubject
实现我想做的事情?或者BehaviorSubject
是要走的路?
答案 0 :(得分:1)
您似乎在新操作上覆盖了dropDownValue$
的Observable。这意味着dropDownValue$
的任何先前订阅者都订阅了不同的Observable,并且他们永远不会得到一个值。
使用dropDownValue$
主题的替代方法是将dropDownValue$
构建为从action$
开始的链式Observable:
this.dropDownValue$ = this.actions$.pipe(
ofAction(UpdateFormValue),
mergeMap((action: any) => Observable.of(action.payload.value.data))
);
this.dropDownValue$.subscribe(console.log);