2017-02-03 11 views
0

角度2つの観測、私は2つの観測、両方のHTTP呼び出しを持っているの組み合わせ現在のitemList $ observableの結果が1つの項目配列を形成します。私はitemListの$を聞いてthatsの非同期パイプを持っているHTMLでRxjsは2

<div *ngFor="let item of itemList$ | async">{{item.name}}</div> 

がどのようにitemListの$にnewItem $をマージし、非同期パイプがマージされた結果を表示することができますか?

答えて

2

あなたは(私はRxJSバージョン5.0.1を持っている)Observable.merge使用することができます

Observable.merge(newItem$, itemList$) 
      .subscribe(response => { 
       // Perform your action 
      }); 
私が見つけるんだとして最も一般的なアプローチであるように思わ

https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/merge.md

+0

.subscribe演算子を使用すると、非同期パイプ(自動的にサブスクライブを処理する)を使用することはできません。 – Nik

+0

その後、OnDestroyで非同期パイプを使用せずに手動で購読を解除するか、HandUnotationでTakeUntilDestroy-Pluginを使用してすべてを自動的に購読解除してください。 – Phil

0

Observableの代わりにSubjectを使用できます。新しいアイテムを作成するとすぐに、それをSubjectに渡してそれを放出します。

itemList$:AsyncSubjct<any>; 

createNewItem(){ 
    this.http.createNewItem(...some url...).subscribe(data => { 
    this.itemList$.next(data); 
} 
+0

。私は、被験者を必要とせずに2つのObservablesを組み合わせた演算子があると考えました。 – Nik

+0

あなたが購読していない限り、muzurBurcuの提案はあなたにとってうまくいかないでしょうか? Observablesを継承しているので、私は個人的にSubjectを好きですし、オーバーヘッドなしで透過的に使用できます。 – Matt