我正在使用HttpClient创建POST请求,并将Observable返回给调用者。当调用者订阅并尝试捕获错误时,该错误是字符串,而不是预期的HttpErrorResponse(通常在文档中看到)。
我尝试使用带有catchError的管道在调用方法中直接处理错误,但是它收到与上述错误相同的错误。
这是我的服务方法的代码
createPartner(partner: Partner) {
return this.http.post(this.publicUrl + "partner", partner).pipe(catchError(this.handleError));
}
handleError(error: HttpErrorResponse) {
console.log(error);
return throwError(error);
}
答案 0 :(得分:0)
/** Error Handling method */
handleError(error: HttpErrorResponse) {
if (error.error instanceof ErrorEvent) {
// A client-side or network error occurred. Handle it accordingly.
console.error('An error occurred:', error.error.message);
} else {
// The backend returned an unsuccessful response code.
// The response body may contain clues as to what went wrong,
console.error(
`Backend returned code ${error.status}, ` +
`body was: ${error.error}`);
}
// return an observable with a user-facing error message
return throwError(
'Something bad happened; please try again later.');
}
答案 1 :(得分:0)
您可能会再次检查文档,因为错误消息在docs中列为字符串类型。 https://angular.io/api/common/http/HttpErrorResponse#constructor()。还要注意,服务器将状态恢复为500,您也可以考虑使用https://angular.io/api/common/http/HttpInterceptor。
答案 2 :(得分:0)
我发现了问题,我忘记了我有一个拦截器正在更改错误。如果还有其他人像我一样健忘,请检查您的拦截器!