Как получить весь HTTP-ответ в Angular Interceptor, когда API отвечает на ошибку

Возникла проблема с получением полных заголовков http при обработке ответа об ошибке.

Проблемное предисловие в фактах:

Api добавляет новый параметр заголовка, когда происходит что-то не так (в нашем случае это X-Message) или когда все в порядке, но есть дополнительное сообщение с полезными деталями.

response.headers['X-Message'] = 'A user has no permissions to approve smth'

response.headers['X-Message'] = 'You've approved smth successfully, but...'

На стороне клиента (приложение Angular) это обрабатывается перехватчиком:

return next.handle(request)
    .pipe(
        map((event: HttpEvent<any>) => {

            if (event instanceof HttpResponse) {
                this.notificationHandler.handle(event);
            }
            return event;
        }), 

    catchError((error: HttpErrorResponse) => {

        /*
        Problem is here!!!
        I need to get the response headers to
        read 'X-Message', but it's unavailable.
        */

        this.notificationHandler.handle(error);
        return throwError(error);
    });

В чем проблема? Когда response.status 200, все в порядке. Я могу получить и показать соответствующее поле заголовка. НО Когда статус 400 или больше, необходимый заголовок недоступен

Были ли у вас какие-то проблемы, когда полный список заголовков нужен в дескрипторе catchError?

Спасибо!


person Ivan Lytvynenko    schedule 28.03.2019    source источник


Ответы (1)


Angular имеет встроенный класс обработчика ошибок. Вот и отловите все ошибки. https://angular.io/api/core/ErrorHandler

person Syam Prasad    schedule 28.03.2019