@distorsion

Angular 2 — как поймать ошибку при выполнении http запросов?

ngOnInit(){
    this.verifyService.verifyToken(this.token).subscribe(
      data => {

        this.res = data.json();

        if(this.res.info){
          console.log('Done')
        }
        else{
          this.router.navigate(['/login']);
          localStorage.removeItem('auth_token');
          console.log('Error token. Please, log in');
        }

      }
    )
  }


Суть проблемы - в главном компоненте AppComponent на хуке ngOnInit стоит такая функция, когда происходит верификация токена и сервер отдает ошибку 401 переход на страницу авторизации не проходит. В чем ошибка? Как мне отловить ошибку 401 и перекинуть юзера на страницу авторизации?
  • Вопрос задан
  • 872 просмотра
Пригласить эксперта
Ответы на вопрос 2
Чтобы обработать ошибку в subscribe надо передать обработчик ошибки как вторую функцию.
У вас:
ngOnInit(){
    this.verifyService.verifyToken(this.token)
        .subscribe(data => respondHandler(data))
}

А надо:
ngOnInit(){
    this.verifyService.verifyToken(this.token)
        .subscribe(data => this.respondHandler(data), error => this.errorHandler(error))
}

Вообщем и в привычных промисах тоже можно так обрабатывать ошибки.
Ответ написан
Комментировать
@kodwi
https://moikrug.ru/kodwi
Внутри verifyToken

http.get(...).do(response => response.status === 401 ? throwError() : doSmthIfGoodResponse())....
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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