2016-11-05 78 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的数据感兴趣(也许使用枚举而不是幻数)。