我有一个组件,它从单个 HTTP 请求中检索其业务对象,然后有几个后续请求来填充下拉列表。这些后续请求中的参数由来自业务对象的数据组成,因此这些请求在第一个请求完成之前无法开始。
给定一个示例 resolver PersonResolver
,这是我想要实现的流程:
- 打电话
this.personService.getPersonData()
。返回类型Observable<PersonModel>
。 PersonModel
使用我们将调用的返回实例personData
来调用this.personService.getAdditionalData1(personData.foo)
andthis.personService.getAdditionalData2(personData.bar)
。两者都返回类型any[]
。- 方法的返回类型
Observable<PersonModel, any[], any[]>
。resolve
我想将它实现到组件的解析器中,但是我很难理解正确使用 RxJS 来完成这项工作。
这是我到目前为止所得到的。我很快就被卡住了。
constructor(private personService: PersonService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<PersonModel, any[], any[]> | Observable<Observable<PersonModel, any[], any[]>> | Promise<Observable<PersonModel, any[], any[]>> {
this.personService.getPersonData().subscribe(personData => {
// what to put in here?
});
}