Почему дескриптор Angular Error не выдает ошибку из сервиса - PullRequest
0 голосов
/ 12 марта 2019

Я реализовал метод для обработки ошибок, когда что-то идет не так в моем сервисном вызове API. В коде я передаю ссылку на мой обработчик ошибок оператору Rxjs catchError, как показано ниже:

GetUserByUserID(id: number): Observable<UserDetails> {
  const url = `${this.baseUrl}/${this.userByID}/${id}`;

  return this.http.get<UserDetails>(url, this.httpOptions)
    .pipe(
      catchError(this.handleError)
    );
  }

ErrorHandler:

import { Observable, throwError as observableThrowError } from 'rxjs';

private handleError(error: HttpErrorResponse) {
  console.log(error);
  if (error.status === 400) {
    return observableThrowError(new BadRequestError(error.error));
  }

  if (error.status === 404) {
    return observableThrowError(new NotFoundError());
  }

  if (error.status === 401) {
    return observableThrowError(new UnAuthorizedError(error));
  }

  if (error.status === 403) {
    return observableThrowError(new ForbiddenError(error));
  }

  return observableThrowError(new AppError(error));
}

В этом методе обработчика ошибок я возвращаю Observable, который включает ошибку, специфичную для моего домена приложения (Error Domain), я создал разные классы ошибок, поэтому я просто проверяю, является ли ошибка экземпляром одного из моих доменов ошибок классы, когда я подписываюсь на Observable.

this.router.data
  .subscribe(response => {
    this.UserDetail = response.userDetail;
    console.log(this.UserDetail);
  }, (error: AppError) => {
    if (error instanceof BadRequestError) {
      this.notifierService.notify('error', 'lease Register to login');
    } else {
      this.notifierService.notify('error', 'Something went worng... Please try again in few minutes');
    }
  }
});

Имея все это для обработки ошибки, то есть возвращает Observable ошибки, характерной для моего приложения, и, наконец, проверьте, что это экземпляр одного из моих доменов ошибок, когда подписка на самом деле не работает, я продолжаю получать эта ошибка в консоли:

enter image description here

...