Как я могу перехватить http ошибки с angular2?

Есть ли API, похожий на угловой 1.x Interceptor API?

Я хочу иметь возможность добавлять перехватчики при запуске приложения, которые будут

  • показывать диалог входа в систему всякий раз, когда 401 код состояния возвращается
  • показать общее сообщение об ошибке всякий раз, когда 5xx код состояния возвращается

за каждый http запрос, который делает приложение.

1 ответ

Вы можете создать свой собственный HTTPConnection, который обрабатывает ошибку и внедрить ее в корневой компонент приложения во время начальной загрузки.

export class CustomHTTPConnection implements Connection
{
}

а затем ввести его во время начальной загрузки следующим образом

bootstrap([provider(Connection,{useClass:CustomHTTPConnection}]);

Если вы не хотите предоставлять пользовательский класс соединения, вы можете сделать это для каждого отдельного запроса, так как Http возвращает наблюдаемый объект, который имеет 3 параметра: onNext, onError, onCompleted.

Вы можете использовать его следующим образом:

class Component
{
constructor(private httpService:HttpService){
}
onInit(){
 this.httpService.getData().subscribe(
  ()=>{},  //on Next
  ()=>{}   //onError
}
}
Другие вопросы по тегам