Угловая HTTP-запрос наблюдаемой ошибки не ловит ошибку? - PullRequest
0 голосов
/ 11 октября 2018

Angular 6 с использованием HttpClient.Пока не реализовано никаких перехватчиков.

У меня есть служба администратора, где я выполняю http-вызов MSGraph.В этом случае я получаю ошибочный запрос 400, который отправляю обработчику уведомлений.

Я проскользнул в этот файл console.log, чтобы убедиться, что блок ошибок запускается вообще, а другойcnosole.log, чтобы увидеть, является ли ошибка «возвращением данных» с сервера.

Ни один из файлов console.logs не запускается, однако глобальный обработчик ошибок по-прежнему отображает 400 неверных ответов на запросы в консоли.

Я бы хотел использовать этот ответ и отображать удобное для пользователя сообщение.

Код:

this.http.get(this.GRAPH_ROOT_URL + this.APP_ID, { headers }).subscribe(data => {
  this.notification.done(data);
  console.log(data);
}), error => {
  this.notification.error(`Error getting users from Microsoft GRAPH API. Reason: ${error}`)
  console.log("this is observable error", error);
}

1 Ответ

0 голосов
/ 11 октября 2018

Angular 6 использует RxJS 6, который поставляется с рядом изменений.Предполагая, что это то, что вы используете, это то, что я бы использовал:

Вот что я бы использовал:

this.http.get(this.GRAPH_ROOT_URL + this.APP_ID, { headers })
    .pipe(catchError(err => {
      this.alert.error('There was an error getting data');
      return throwError(err);
    })).subscribe(data => this.notification.done(data));

Итак, вы используете pipe для вызова catchError, что делаетправильно обрабатывать ошибки сервера.

Чтобы использовать catchError, сначала необходимо импортировать его, например:

import { catchError } from 'rxjs/operators';
...