2016-09-23 24 views
0

と仮定I持ってそのコンテンツをレンダリングするために、2つの観測を必要とするコンポーネント:呼び出すための適切な角度/ rxjs方法です何角度2 - 2 BehaviorSubject /観測に作用する

this.manifest.subscribe((a) => { 
    f(a, b) 
}) 

this.route.params.subscribe((b) => { 
    f(a, b) 
}) 

f()aが到着した後、および/ b(たとえば、ルーティングパラメータの更新)が到着したら、再度呼び出します。

明らかに私はabを手動で追跡することができましたが、それは醜くてエレガントではありません。 Angularianの方法がありますか?

答えて

3

combineLatestを使用すると、2つのストリームをマージし、いずれかが起動するたびに起動できます。

Rx.Observable.combineLatest(this.manifest, this.route.params, (a, b) => f(a, b)) 
    .subscribe(c => /*Do something with the result of f(a,b)*/ 

注上記のみの火災、それが各ソースからの少なくとも1つの値がありますが、私はあなたがするために、2つの観測が必要な場合は、あなたのソースがBehaviorSubjects

0

であればそれは問題であるべきとは思わない後あなたが考えてみたいかもしれないもう1つを解決してObservable.concat(obs1, obs2)

連結オブザーバブルにサブスクライブする場合、obs1が最初にサブスクライブされ、次にobs2がサブスクライブされます。

関連する問題