首页 文章

Angular 2:在路线解析器中链接RxJS Observable

提问于
浏览
1

我试图从解析器中的一系列可观察数据中获取所有数据 . 我首先需要进行http调用以获取所有类型并返回一个数组,我需要循环遍历类型数组并获取每种类型的所有数据 . 最后,我想一次返回一个数组或每种类型的所有数据(在导航到路线之前) .

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;
            })
}

使用我现在的代码,解析器似乎不完整(或者至少不完整嵌套的observable,因此,为该observable返回的数据在组件中是未定义的 . 任何人都可以提出解决此问题的方法吗?谢谢!

1 回答

  • 0

    您可以查看this great blog article,特别是以下部分中的示例:

    将Observable串联和并联组合

    这似乎达到了你想要做的 .

    在您的情况下,您可以在映射数据之前考虑 Array.filter 函数,因为您似乎只对类型4的数据感兴趣(并且可能使用枚举而不是幻数) .

相关问题