捕获错误响应未作为HttpErrorResponse对象返回

时间:2019-09-01 16:52:24

标签: node.js angular7 angular-httpclient

我正在尝试使用catchError捕获角度服务方法中的异常。

在这里,我在handleError方法中尝试投射HttpErrorResponse的错误响应,但是响应始终返回字符串,在这种情况下,它返回的是字符串Bad Request而不是{{ 1}}对象。

从node.js服务方法返回的实际错误对象的类型为HttpErrorResponse

Result

结果对象

create(data) {

    return this.httpClient.post<Result>(this.url, JSON.stringify(data), this.httpOptions)
    .pipe(catchError(e => this.handleError(e)))
}

handleError(error: HttpErrorResponse) {

  let errorMessage = '';

  if (error.error instanceof ErrorEvent) {
      // client-side error
      errorMessage = `Error: ${error.error.message}`;
  } else {
      // server-side error
      //errorMessage = `Error Code: ${error.failMessage}\nMessage: ${error.failMessage}`;
  }

  return throwError(error);
}

node.js 服务

export interface Result
{
    error: any;
    failMessage: string;
    okMessage: string;
}

1 个答案:

答案 0 :(得分:0)

Angular http客户端模块将仅返回响应正文,如果您需要所有HTTP响应(如标头状态和正文),则必须使用观察选项,请检查angular docs

this.httpOptions = { .....
        observe: 'response' 
    }

角度文档示例。

 getConfigResponse(): Observable<HttpResponse<Config>> {
     return this.http.get<Config>(
       this.configUrl, { observe: 'response' });
   }