首页 > 解决方案 > Angular 8 Resolver - 如何从一个解析器获取数据作为其他解析器的输入?

问题描述

我有 2 个 REST API。来自这两个 API 的数据都是必需的。同时,第二个 API 将 API 1 的输入作为参数。

GET api/one --> {id: 3},GET api/two 需要这个响应id?inputFromApiOne=3 --> {name: 'SS'}

我在组件中可用的最终响应应该是 -

{
  "id": 3, -- from API One
  "name": "SS" -- from API Two
}

我已经使用解析器从 API One 获取数据,但无法将其用作第二个解析器的输入。

我还尝试从 resolver1 中的两个 API 获取数据。我使用了 flatMap,但最后我只得到了来自第二个 API 的数据。

resolve(route: ActivatedRouteSnapshot) {
  return this.myService.getDataFromApiOne(route.params.id).pipe(flatMap(data => {
    return this.myService.getDataFromApiTwo(data.someKey.id);
  }));
}

标签: angularangular-routingangular-resolver

解决方案


我希望您在路由配置中指定了两个解析器,例如

 {
    path: '', 
    component: MyComponent,
    resolve: {
      fromResolverOne: Resolver1
      fromResolverTwo: Resolver2
   }
}

然后在你的组件中

const resolverOneData = this.route.snapshot.data['fromResolverOne'];
const resolverTwoData = this.route.snapshot.data['fromResolverTwo'];

推荐阅读