Angular 5 - 在 HttpInterceptor 中操作 HttpErrorResponse 的错误 属性
Angular 5 - Manipulating HttpErrorResponse's error property in HttpInterceptor
我有来自其余 api 的自定义错误消息正文 JSON。
{
"status":400,
"url":"/api/abc",
"message":"Custom Error Message"
}
我想将它作为对象获取到订阅的错误范围内。
我尝试在每次使用 HttpInterceptor 响应后将其转换为对象。但是 HttpErrorResponse 是只读的。我怎样才能在服务中获得这个对象?
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).do((event: HttpEvent<any>) => {}, (err: any) => {
if (err instanceof HttpErrorResponse) {
// Here trying convert to object from json
err.error = <ErrorMessageBody>JSON.parse(err.error);
}
});
}
err.error
已经翻译成 JSON.
这对我有用 catch
:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req)
.catch((err: HttpErrorResponse) => {
return Observable.throw(err.error);
});
}
我有来自其余 api 的自定义错误消息正文 JSON。
{
"status":400,
"url":"/api/abc",
"message":"Custom Error Message"
}
我想将它作为对象获取到订阅的错误范围内。 我尝试在每次使用 HttpInterceptor 响应后将其转换为对象。但是 HttpErrorResponse 是只读的。我怎样才能在服务中获得这个对象?
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).do((event: HttpEvent<any>) => {}, (err: any) => {
if (err instanceof HttpErrorResponse) {
// Here trying convert to object from json
err.error = <ErrorMessageBody>JSON.parse(err.error);
}
});
}
err.error
已经翻译成 JSON.
这对我有用 catch
:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req)
.catch((err: HttpErrorResponse) => {
return Observable.throw(err.error);
});
}