angular - 角度解析器问题
问题描述
我正在处理从 ACF 选项获取主页 ID 的 Angular 项目,然后需要向该页面 ID 发送另一个 HTTP 请求。
我已经创建了角度解析器,但我不知道如何发送这个多个请求
有没有办法从选项端点获取主页,然后传递到页面端点。
这是我正在尝试的代码。
export class HomeResolverService implements Resolve<any> {
constructor(private http: HttpClient) {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> | Promise<any> | any {
this.http.get<any>(ACF_OPTIONS).subscribe((res) => {
return this.http.get<any>(HOME_PAGE + res.acf.home_page).pipe(map((optionsData: any) => {
return optionsData;
}));
});
}
}
但是这个代码返回是未定义的
解决方案
问题是您不再返回可观察对象,因为您已经在解析器内部订阅。
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> | Promise<any> | any {
return this.http.get<any>(ACF_OPTIONS).pipe(
switchMap(res) => this.http.get<any>(HOME_PAGE + res.acf.home_page)
);
}
您现在应该在 route 参数的已解析参数中收到第二个 http 调用的返回。
推荐阅读
- sql - 如何使用其他列值的连接更新列
- apache - 为多个参数和页面编辑 .htaccess
- opengl - 使用 GLX 时,OpenGL glReadPixels 不适用于 EGL
- php - 在 AWS 上部署 Laravel Echo
- highcharts - Highcharts - 样式模式下的工具提示宽度
- elasticsearch - ElasticSearch:根据 reverse_nested doc_count 排序顶级聚合桶
- swift - iOS NetworkExtension:对 iPhone 中的所有查询使用自定义 DNS 服务器
- django - Django - 此表单中“无法设置属性”错误的原因是什么?
- ios - 如何在双向绑定 ViewModel/TextField 中保持 @Published 属性规范化(即保持小写,删除链接等)?
- c# - WPF C# DataGrid 绑定到存储过程