Angular HTTP 请求的条件

Condition on Angular HHTP Request

你可以使用条件,Angular 订阅功能吗? 就像,在这段代码中:

   this.http.post<any>(phpUrl, content)
.subscribe(
    (r) => {
      if(r.message) // That's how the target script actually manages errors
      { 
        console.log(r.message);
        this.handleErrorPhp(r, formData.email);
      }
      else
      {
        this.router.navigate(['/login'], { queryParams: { register: true } });
      }
    },
    (error) => {
      this.handleErrorPhp(error, formData.email);
    }
  );

当脚本没有发现任何错误时,我也想导航到登录页面。但是,即使“r.message”为空,我的代码也会出错并停止,告诉我 r.message 未定义。

编辑:这是控制台错误日志:

ERROR TypeError: can't access property "message", i is null

我会说在尝试访问 属性 message 之前检查是否定义了 r。有关 double-bang 运算符 here.

的更多信息
this.http.post<any>(phpUrl, content).subscribe(
  (r: any) => {
    if (!!r && !!r.message) { 
      console.log(r.message);
      this.handleErrorPhp(r, formData.email);
    } else {
      this.router.navigate(['/login'], { queryParams: { register: true } });
    }
  },
  (error: any) => {
     this.handleErrorPhp(error, formData.email);
  }
);