Мы выполняем Angular 8. Наш API настроен таким образом, чтобы тело ответа содержало атрибут «данные» и атрибут «ошибки». Они не являются взаимоисключающими - в ответе могут быть данные и ошибки, и мы хотим и того, и другого. Мы успешно установили следующее событие Observable для отправки вложенного ответа на данные. Однако это игнорирует ошибки. Мы хотели бы обработать ошибки в вызывающем компоненте, подписавшись следующим образом
this.myService.getData.subscribe(resp => {...}, error => {...});
Это наш код перехватчика:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request)
.pipe(map((event) => {
if (event instanceof HttpResponse) {
if (event.body && event.body.hasOwnProperty('data')) {
const eventClone = event.clone({ body: event.body['data'] });
return eventClone;
}
return event;
}
}));
}
Я попытался объединить две наблюдаемые, изменить текущую и другие подходы, но в конечном итоге не удалось получить и ошибки, и ответ обратно компоненту.