2016-11-05 45 views
0

我試圖從解析器中的一系列observables中獲取所有數據。我首先需要進行一次http調用以獲取所有類型,並返回一個數組,我需要循環訪問類型數組並獲取每種類型的所有數據。最後,我想一次返回一個數組或所有類型的數據(在導航到路由之前)。Angular 2:在路由解析器中鏈接RxJS Observables

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的數據感興趣(也許使用枚舉而不是幻數)。