在 angular 6 中出现错误时执行订阅

Subscribe executed while getting error in angular 6

最近我将 angular 5 升级到 angular 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 错误时。我能够在错误处理程序中捕获此错误,但仍然执行订阅,为什么?只有在收到没有错误的响应时才应调用订阅。

我对此很陌生,但在 angular 5 中它并没有发生。那么谁能纠正我做错了什么?

订阅可让您处理从注册函数返回的任何内容。但是,为什么你只是捕获错误你应该至少映射你的结果并在它成功时 return 它。另外我不认为你应该做什么来捕捉和抛出错误。

希望对您有所帮助

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
    },
)