angular - 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);
}));
}
解决方案
我希望您在路由配置中指定了两个解析器,例如
{
path: '',
component: MyComponent,
resolve: {
fromResolverOne: Resolver1
fromResolverTwo: Resolver2
}
}
然后在你的组件中
const resolverOneData = this.route.snapshot.data['fromResolverOne'];
const resolverTwoData = this.route.snapshot.data['fromResolverTwo'];
推荐阅读
- flutter - connectedResult 在颤振应用程序的启动中返回null?
- rpa - UIPath - 没有 Orchestrator 的计划
- reactjs - 在父组件中反应更新状态
- image-processing - 如何使用 Leptonica 进行扩张
- python - Matplotlib 散布不同的图像 (MNIST) 而不是 TSNE 的绘图
- c - 使用带有 uint64_t 类型的内置溢出函数
- laravel - 在 Vue js 中从一个详细信息页面到主详细信息页面
- node.js - Bookshelf Node js 问题:必须为设备组件定义一个有效的目标模型 hasMany 关系
- node.js - 如何从服务器显示名称到 angular.js?
- laravel - 从 mongodb 中选择每列都有不同架构的数据