我有一個Angular 2應用程序,其中有一個帶有返回Observable的getAlgemeneInfo()方法的'AlgemeneInfoService'。RxJS合併流並使用兩者的值來調用第三個
使用angular-redux/store,我有一個商店裏有一個'Dossier'和'Verpleegperiode'對象,它們都有一個Id,AlgemeneInfoService用來獲取'AlgemeneInfo'對象。 (該VerpleegperiodeId可以爲null)
我試圖把ActiveAlgemeneInfo,應通過調用AlgemeneInfoService被刷新時的任何檔案或Verpleegperiode改變狀態 - 對象,在國家的對象。
我的計劃是使用處理這些訂閱和有一個方法getActiveAlgemeneInfo(返回「selectedAlgemeneInfo」,它被設置在訂購的ActiveAlgemeneInfo狀態對象的ActiveAlgemeneInfoService):
@select(state => state.dieet.activeAlgemeneInfo)
private activeAlgemeneInfo$: Observable<AlgemeneInfo>;
在構造服務的,我設置訂閱:
Observable.combineLatest(
this.activeInfohosVerpleegperiode$,
this.activeInfohosDossier$
)
.distinctUntilChanged()
.subscribe(([v, d]) => {
const verpleegperiodeId = v != null ? v.verpleegperiodeId : null;
const dossierId = d.dossierId;
console.log(`vp id: ${verpleegperiodeId} - d id: ${dossierId}`);
this._setActiveAlgemeneInfo(dossierId, verpleegperiodeId);
});
this.activeAlgemeneInfo$.subscribe(algemeneInfo => this.selectedAlgemeneInfo = algemeneInfo);
而且在服務上,我也得到了一個方法:
private _setActiveAlgemeneInfo = (dossierId: number, verpleegperiodeId: number) => {
this._algemeneInfoService
.getAlgemeneInfo(dossierId, verpleegperiodeId)
.subscribe(algemeneInfo => this._dieetActions.selectAlgemeneInfo(algemeneInfo));
}
當服務被構造和方法getActiveAlgemeneInfo()被調用:
public getActiveAlgemeneInfo =(): Observable<AlgemeneInfo> => {
return this.activeAlgemeneInfo$;
}
它只是修建垃圾http請求,而當我CONSOLE.LOG的Observable.combineLatest()時,檔案和Verpleegperiode是與之前的請求完全一樣。
我該如何得到這個工作?