1
同じページに2つのコンポーネントがあります。各コンポーネントは、パラメータを持つサービスからのObservable
に加入している注文に関するものを表示しています。異なるコンポーネントから同じ監視可能な(共有)サブスクリプションを使用して
サービス:
getOrders(url: string, query: string) : Observable<any> {
return this.http.get(url + "&" + query, this.options)
.map((res:Response) => res.json())
.catch((error:any) => Observable.throw(error || 'Server error'))
.share();
}
成分1:
Observable.combineLatest(this.behaviorsubject1,this.behaviorsubject2)
.subscribe((res)=>{
this.combineLatestStream = res;
this.selectedOrganization = this.combineLatestStream[1];
this.mainService$ = this.orderService.getOrders(this.settings.backend.orders, "organization_id="+this.selectedOrganization.organization_id);
this.mainService$.subscribe(result => {
//call 1
});
});
成分2:私はすべての注文を取得する第一成分で
this.aservice.stuff.subscribe((res) => {
this.selectedOrganization = res;
this.mainService$ = this.orderService.getOrders(this.settings.backend.orders, "organization_id="+this.selectedOrganization.organization_id+"&status=1");
this.mainService$.subscribe((val) => {
//call 2
})
})
。 2番目のコンポーネントでは、(いくつかのパラメータに基づいて)一部だけを取得します。どちらもmainService$
です。私はこのサービスを購読する必要があるより多くのコンポーネントを持っています。サービスの共有は機能していません。その他の方法は?
publishReplay(1).refCount()
でも試しました。私は複数のAPI呼び出しをしたくない。サブスクライブした後
使い方'void'は動作しません。そして今、データをコンポーネントでどのように入手できますか? –
申し訳ありませんが、それが動作しますリターンを削除 –
ええ、ちょうど誤植を考え出した。さて、あなたが説明したいことは理解していますが、どのようにデータをコンポーネントで得ることができますか。 'this.mainService $'これは 'undefined'です。 –