使用 httpclient 时查看变量未从错误处理程序代码更新
View variable not updating from error handler code when using 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)
})
我有一个身份验证服务,我用它来登录我的应用程序。
这是在我的登录组件的 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)
})