Angular 的订阅未记录完整错误

Angular's subscribe not logging full error

我正在尝试记录来自订阅的错误,但错误似乎...不完整?

我从来没有见过这种问题,在 Google 上也找不到任何东西。代码如下:

this._http.post(this.urlPath, email).subscribe(
    res => {
      // stuff
    },
    err => {
      console.log(err) // <- I need to log this
    }
  );

它在一定程度上起作用。当我打开浏览器的控制台时,为了检查错误,我得到的是:

问题是,这里似乎缺少信息。如果我打开“网络”选项卡,同一请求的响应如下所示:

如你所见,真正的响应有更多的信息。我试过使用 {observe: "response"},但无济于事。我应该注意,如果我尝试使用 fetch,响应会完成,但我宁愿使用 HttpClient.

这是怎么回事?

当您收到 http 错误状态代码时,您无法通过与成功案例相同的方式访问服务返回的负载。就像一个特殊的对象。

但是您可以通过在您的服务中使用管道和错误处理程序,像这样访问它。这是它的一个最小示例:

your.service.ts
...

handleError(error) {
  return throwError(error.error);
}
return  this.http.get ... the rest of your request.pipe(
 catchError(this.handleError)
);
...

在您使用服务的地方,您可以在 err 中访问您的错误请求包含的完整响应。

 ...
 , error => {
   console.warn(error);        
 }

或者更好的是,您可以抛出整个对象以访问错误(响应主体)和其余参数,如状态代码。