Angular 5 - Управление свойством ошибки HttpErrorResponse в HttpInterceptor
У меня есть тело сообщения об ошибке, как JSON от остальных API.
{
"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);
}
});
}
1 ответ
Решение
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);
});
}