HttpInterceptor обнаруживает 401 ответ - PullRequest
0 голосов
/ 12 ноября 2018

У меня был рабочий код, который вызывал метод logout () в случае ответа 401 от сервера.Поскольку я обновил Angular с 5.2 до 7.0.3, он больше не работает.Я думаю, что это должно быть что-то с измененным интерфейсом HttpInterceptor или множеством критических изменений rxjs.Прямо сейчас это выглядит так и выдает ошибку под кодом.

export class UnauthInterceptor implements HttpInterceptor {

  private session: SessionProvider;
  constructor(private injector:Injector) {}

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      this.session = this.injector.get(SessionProvider);
      return next.handle(request).pipe(catchError(err => {
            if (err.status === 401) {
                // auto logout if 401 response returned from api
                this.session.logout();
            }
        })
      );
  }}

tsc выдает следующую ошибку:

src / app / interceptors / unauth.interceptor.ts:19:51 - ошибка TS2345: Аргумент типа '(err: any) => void' не может быть назначен параметру типа '(err: any, catch: Observable>) => ObservableInput <{}>'.
Тип 'void' нельзя назначить типу 'ObservableInput <{}>'.

19 return next.handle (request) .pipe (catchError (err => {

)

1 Ответ

0 голосов
/ 12 ноября 2018

Здравствуйте, вы должны вернуть наблюдаемое с catchError, например:

return throwError(error)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...