微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 httpclient 时查看变量未从错误处理程序代码更新

如何解决使用 httpclient 时查看变量未从错误处理程序代码更新

我有一个身份验证服务,我用它来登录我的应用程序。

这是在我的登录组件的 login() 函数中处理的:

  public login() {

    const val = this.form.value;

    if (!this.email.invalid && !this.password.invalid) {
      this.authService.login(val.email,val.password)
        .pipe(
          catchError(this.handleError)
        )
        .subscribe(
          data => {
            this.jwtToken = data;
          }
        );
    }
  }

如果发生某些错误(例如 401 未授权),则调用 handleError 函数,我会从该函数获取更具体的信息:

private handleError(error: HttpErrorResponse) {
    if (error.status === 0) {
      // A client-side or network error occurred. Handle it accordingly.
      console.error('An error occurred:',error.error);
    } else {
      // The backend returned an unsuccessful response code.
      // The response body may contain clues as to what went wrong.
      console.error(
        `Backend returned code ${error.status},` +
        `body was: ${error.error}`);
      this.loginStatus =
        `Backend returned code ${error.status},` +
        `body was: ${error.error}`
      console.log("Setting it: " + this.loginStatus)
    }
    // Return an observable with a user-facing error message.
    return throwError(
      'Something bad happened; please try again later.');
  }

在我的 .html 文件中,我将 {{loginStatus}} 用于输出在 handleError 函数中设置的文本。

我遇到的问题是 html 视图中的 loginStatus 显示永远不会更新。如果我在订阅部分为它分配一个值 - 它会被很好地更新,但是当我在 catchError 处理程序中分配它时它似乎没有更新。我可以在控制台中看到它在 handleError 函数中设置得很好,但视图永远不会更新。

如果我想在 handleError 函数运行后向用户显示一些更具体的信息,关于为什么以及可以做什么的任何想法?

解决方法

调用错误处理程序时,this 上下文正在丢失

尝试使用箭头函数调用错误处理程序:

catchError((err) => {
     return this.handleError(err)
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?