javascript - Angular - .publishLast 不是函数

标签 javascript angular rxjs

当我使用 async 管道时,我试图避免创建多个请求。 我有以下请求从 api 获取用户

getUser() {
    this._user = this.http.get<User>(environment.baseAPIUrl + 'user')
      .pipe(
        tap((user: User) => {
          // login successful if there's a jwt token in the response
          console.log(user);

          this.setIsVerified(user.verified);
          this.userReady = true;
        }),
        catchError((error: HttpErrorResponse) => {
            console.log(error.statusText);
            if (error.status === 403) {
              this.logout();
            }

            return throwError(error.error);
          }
        ))
      .publishLast()
      .refCount();;
  }

但是当我尝试运行该应用程序时出现以下错误:

ERROR TypeError: this.http.get(...).pipe(...).publishLast is not a function

我试着添加 从 'rxjs/operators' 导入 {catchError, tap, publishLast}; 但问题仍然存在。

我用 Angular 6 和 "rxjs": "^6.1.0"

最佳答案

从 RxJS v6.x 开始,您需要将 publishLast() 作为 pipe 的参数(argument),如下所示:

 getUser() {
      this._user = this.http.get<User>(environment.baseAPIUrl + 'user')
        .pipe(
          tap((user: User) => {
            // login successful if there's a jwt token in the response
            console.log(user);

            this.setIsVerified(user.verified);
            this.userReady = true;
          }),
          catchError((error: HttpErrorResponse) => {
              console.log(error.statusText);
              if (error.status === 403) {
                this.logout();
              }

              return throwError(error.error);
            }
          ),
          publishLast()
        )

        .refCount();;
    }

您不应该像在 RxJS v5.0 中那样链接 publishLast()

关于javascript - Angular - .publishLast 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50924128/

相关文章:

javascript - 如何对输入字段的行和列求和

javascript - VSCode : "Go to definition" not working

javascript - 如何使用 ACE 编辑器突出显示代码?

angularjs - Angular 2 混合应用程序 : Unknown provider: ng2. ComponentFactoryRefMapProvider

angular - Custom Guard,获取ID路由参数

typescript - 使用 TypeScript 的 combineEpics 给出类型错误

javascript - Google Earth 引擎初始化问题

css - 如何调整mat-option的位置

angular - 升级到 Angular 10 后 rxjs 和 loadash CommonJS 或 AMD 依赖项优化警告

Angular 4 - 取消订阅的最佳方式