Sanu0074
@Sanu0074

Почему интерцептор не отдает ErrorResponse в обработчик?

Я пытаюсь написать интерцептор, который предотвратит завершение работы скрипта в случае ошибки от сервера.
Так я вызываю метод сервиса в компоненте:
const res = await this.service.getLandingPage(url);
// do actions with res
console.log(res)

Сам метод сервиса:
async getLandingPage<T>(url: string): Promise<Page> {
		return this.get<Page>(url,
			{
				observe: "response"
			}
		).toPromise();
	}

Интерцептор:
return next.handle(request).pipe(
			catchError((error: HttpErrorResponse) => {
				this.log.error(error);
				return EMPTY;
			})
		);

В данном случае если ответ от сервера успешный в res приходит HttpResponse как и ожидается, а если сервер ответил ошибкой то в res ничего (undefined). Если же в интерцепторе вместо пустого Observable вернуть error, то скрипт упадет и в компоненте до строки console.log(res) сценарий так и не дойдет. Как сделать интерцептор так чтобы в приведенном случае, при ошибке от сервера в res попадал HttpErrorResponse а не undefined?
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
return throwError(error)

catchError требует возвращать обсервабл, а вы ему подсовываете plain value
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы