2016-04-26 15 views
0

私はいくつかの外部API呼び出しを持つコンポーネントを持っています。これらすべてのAPI呼び出しをすべて購読してから、呼び出しが成功するとドロップダウンを設定します。私の問題は、すでに作成されたエンティティを読み込むときです。フォームが約束が達成されるのを待っているため、ドロップダウンの一部が表示されないことがあります。すべてのオブザーバブルがいつ解決されたかを判断する方法はありますか?

私は、約束事の成功のブロックで長いものに沿って変数や何かを追加して、すべての変数が真であれば、読み込まれたエンティティをUIに取り込むことができることを実感します。

すでにこのような角度2が組み込まれていますか?私はこの特定の問題のオンラインの例を見つけることはできません。

+1

この記事を見てみましょう:http://stackoverflow.com/questions/36014508/how-to-know-when-all-angular2-http-calls-終わった – echonax

答えて

1

observablesのforJoin演算子を利用できます。グローバルコールバックを呼び出す前に、すべてのオブザーバブルが要求を実行するのを待つことができます。

受信したデータはすべてのデータの配列に対応します。ここで

はサンプルです:

Observable.forkJoin([ 
    this.service.getEntityData(), 
    this.service.getDropdown1Values(), 
    this.service.getDropdown2Values(), 
]).subscribe((data) => { 
    this.entityData = data[0]; 
    this.dropdown1Values = data[1]; 
    this.dropdown2Values = data[2]; 
});