从角度路径解析器返回多个信息

时间:2018-05-22 09:51:03

标签: angular rxjs observable resolver

我正面临一个关于在我的申请中退还解析器的问题。

基本上这是我的解析器:

constructor(private authService: AuthService) { }
  resolve() {
    /*
    this.authService.token; // (property) PeAuthService.authorizationHeader: string
    this.authService.getUserInfo(); // (method) PeAuthService.getUserInfos(): Observable<any>
    */
    return {
      token: this.authService.token,
      userInfo: this.authService.getUserInfo()
    };
  }

我不觉得我正在以正确的方式行事,因为我可以访问令牌值但不能访问userInfo。

有没有办法返回一个包含userinfo数据和令牌的observable?那么可能在一个可观察的组合中组合一个observable和一个字符串?

2 个答案:

答案 0 :(得分:1)

更多&#34; Rx&#34;方法将获得getUserInfo(),然后使用this.authService.token运算符将其与map()合并:

this.authService.getUserInfo()
  .pipe(
    map(userInfo => ({
      userInfo,
      token: this.authService.token,
    }))
  );

答案 1 :(得分:0)

在不等待值的情况下,返回对象的userInfo属性包含Observable。因此,只需使用asyncawait

async resolve() {
  return {
    token: this.authService.token,
    userInfo: await this.authService.getUserInfo()
  };
}