如何在 angular(ionic) 中捕获 http 错误?

Sam*_*a K 1 rxjs ionic-framework angular

我正在尝试使用 ionic4 应用程序中的以下代码捕获错误代码为 400 的 HTTP 错误。但它没有抓住它,这里有什么问题。控制台日志行均未执行,但在 Firefox 控制台中显示 400 错误。

export class AuthService {

  constructor(private httpClient: HttpClient)  {}

  login(email: string, password: string){

    const data = {
      password: password,
      email: email,
    }

    this.httpClient.post(url, data).pipe(
      tap((res: IAuthResponse) => {
        console.log("Catch error 1") 
        return res;
      }),
      catchError((error) => {
        console.log("Catch error 2")
        return Observable.throw(new Error(error.status));
      })
    ).subscribe( 
       (result) => {
         console.log("Catch error 3")
       },
       (error) => {
          console.log("Catch error 4")
       }
    );
  }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

实际上我只想在我编码 console.log 行的任何地方处理这个错误。找到了很多这样的例子,但没有一个有效。

编辑:在我的真实代码中,控制台日志第 1 行位于 AuthService 类中,但订阅代码位于不同的类文件中。这两个类都必须根据结果进行一些初始化。所以我需要同时拥有管道代码和订阅代码。

Cha*_*ghe 5

这是可以做到的方式

这是工作示例

this.httpClient.post("ssdsdsd", data).pipe(
      (res: any) => {
        console.log("Catch res ") 
        return res;
      },
    ).subscribe( 
       (result) => {
         console.log("Catch result ")
       },
       (error) => {
          console.log("Catch error ")
       }
    );
Run Code Online (Sandbox Code Playgroud)