2016-11-05 24 views
0

リゾルバ内のオブザーバブルチェーンからすべてのデータを取得しようとしています。私はまずすべての型を取得するためにhttp呼び出しを行う必要があり、配列が返されると、型の配列をループして各型のすべてのデータを取得する必要があります。最後に、各タイプの配列またはすべてのデータを一度に返したい(ルートに移動する前に)。私が今持っているコードで角度2:ルートリゾルバのRxJSオブザーバブルの連結

getAllTypesDataResolverFunction() { 
     this.getAllTypes() 
      .flatMap(data => { 
       let allTypesData = []; 

       data.forEach(i => { 
        if(i.type === 4) { 
         allTypesData.push({'typeObj': i}); 
         return Observable.forkJoin([this.getDataForType(), this.getMoreDataForType()]) 
          .subscribe(data => { 
           let arrayLength = allTypesData.length-1; 
           allTypesData[arrayLength].typeObjData = data; 
          }) 

        } 
       }) 
       return allTypesData; 
      }).subscribe(data => { 
       return data; 
      }) 
} 

、リゾルバは完全ではない(あるいは少なくとも、ネストされた観測を完了していないので、データはその観測可能に返さがコンポーネントに定義されていないようだ。誰でもお勧めできます?!この問題を解決する方法のおかげ

答えて

0

あなたはthis great blog articleを見て、特に例セクションで呼ばれることができます:シリーズのとで

組み合わせる観測を並列

あなたがしたいことを正確に達成しているようです。

あなたのデータにマッピングする前にArray.filterが機能していると思われるかもしれません。タイプ4のデータだけが興味を持っているようです(そして、マジックナンバーの代わりにenumを使用するかもしれません)。

関連する問題