最近我已将角度5升级到角度6,因此我将服务代码如下升级:
register(postBody: any): Observable<any> {
return this.http
.post(this.remoteUrl + "auth/register", postBody)
.pipe(
catchError(this.handleError("register", []))
);
}
this.authService.register(this.formObj.value).subscribe(
response => {
}
)
现在,当我从API收到400错误时。我能够在错误处理程序中捕获此错误,但仍订阅执行,为什么?只有在收到没有错误的响应时,才应调用订阅。
我对此并不陌生,但在角度5中却没有发生。那么有人可以纠正我在做什么错吗?
答案 0 :(得分:11)
订阅使您可以处理从注册功能返回的所有内容。但是,为什么您只是捕获错误,您至少应该映射结果并在成功后将其返回。另外,我不认为您应该采取哪些措施来捕捉和抛出错误。
希望这对您有帮助
register(postBody: any): Observable<any> {
return this.http
.post(this.remoteUrl + "auth/register", postBody)
.pipe(
map(data => data), //this will return the response when success
catchError(this.handleError(err =>{
//Here you can do something like
err.code === 404
? throwError("Not found")
: throwError(err)
})
);
}
this.authService.register(this.formObj.value).subscribe(
response => {
// Do stuff whith your result
},
err => {
// Do stuff whith your error
},
() => {
// Do stuff after completion
},
)