我正在尝试使用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;
}
答案 0 :(得分:0)
Angular http客户端模块将仅返回响应正文,如果您需要所有HTTP响应(如标头状态和正文),则必须使用观察选项,请检查angular docs
this.httpOptions = { .....
observe: 'response'
}
角度文档示例。
getConfigResponse(): Observable<HttpResponse<Config>> {
return this.http.get<Config>(
this.configUrl, { observe: 'response' });
}