Angular 2:在路由解析器中链接RxJS Observables
问题描述:
我试图从解析器中的一系列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;
})
}
用我现在所拥有的代码,解析器似乎是不完整的(或至少不完全嵌套的观测,因此,对于观察到的在组件未定义返回的数据。任何人都可以提出一个?!的方式来解决这个问题,谢谢
答
你可以看看this great blog article,尤其是例如在部分叫做:
组合观测量串联和并联
这似乎实现了你想要做的。
对于您的情况,您可能会考虑在映射数据之前使用Array.filter
函数,因为您似乎只对类型4的数据感兴趣(也许使用枚举而不是幻数)。