【问题标题】:Return multiple information from angular route resolver从角度路由解析器返回多个信息
【发布时间】:2018-11-01 01:05:12
【问题描述】:

我遇到了一个关于在我的应用程序中返回解析器的问题。

基本上这是我的解析器:

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。

有没有办法返回一个包含用户信息数据和令牌的可观察对象?所以也许将一个 observable 和一个字符串组合在一个 observable 中?

【问题讨论】:

    标签: angular rxjs observable resolver


    【解决方案1】:

    更多“Rx”方式是获取getUserInfo(),然后使用map() 运算符将其与this.authService.token 结合:

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

    【讨论】:

    • 你的语法有问题吗?
    • 我得到的地图功能:找不到名称“地图”。您指的是 “Map” 吗?虽然效果很好,但我单独使用了地图
    • 需要从rxjs/operators导入map()操作符
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 2018-09-13
      • 2011-02-13
      • 2021-10-01
      • 2022-06-22
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      相关资源
      最近更新 更多