【问题标题】:Type 'Observable<Observable<Response>>' is not assignable to type 'Observable<Response>'类型“Observable<Observable<Response>>”不可分配给类型“Observable<Response>”
【发布时间】:2021-01-02 17:37:45
【问题描述】:

使用 Angular 10 我有以下方法:

private getUser() : Observable<Response> {

  return this.authenticationService.getClaims('sub').pipe(map((claims: Claim[]) => {

    let request: Request = { userId: 1 };

    return this.userService.getByUserId(request).pipe(
      map((payload: Payload<Response[]>) => payload.result[0])
    );

  }));

}

我收到错误:

Type 'Observable<Observable<Response>>' is not assignable to type 'Observable<Response>'.

如何解决?

【问题讨论】:

    标签: angular typescript rxjs angular10


    【解决方案1】:

    创建内部 Observable 需要展平,这可以使用 SwitchMap/MergeMap 运算符来实现,如下所示:

    private getUser() : Observable < Response > {
    
      return this.authenticationService.getClaims('sub').pipe(
        switchMap((claims: Claim[]) => {
    
          let request: Request = { userId: 1 };
    
          return this.userService.getByUserId(request).pipe(
            map((payload: Payload<Response[]>) => payload.result[0])
          );
    
        }));
    
    }
    

    这是一篇关于 Understanding RxJS map, mergeMap, switchMap and concatMap 的精彩文章

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 2017-12-18
      • 2018-08-14
      • 2020-11-23
      • 2019-01-12
      • 1970-01-01
      相关资源
      最近更新 更多