首页 > 解决方案 > 角度解析器问题

问题描述

我正在处理从 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;
      }));
    });
  }
}

但是这个代码返回是未定义的

标签: angularwordpressapi

解决方案


问题是您不再返回可观察对象,因为您已经在解析器内部订阅。

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 调用的返回。


推荐阅读