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);
        });
}
Другие вопросы по тегам