обработка ошибок с перехватчиком http, не работающим в Angular - PullRequest
0 голосов
/ 17 января 2020

Я работаю над Angular 8

Я пытаюсь централизовать обработку ошибок через Interceptor

Мой код перехватчика работает, но не возвращает ошибку

import {
    HttpEvent,
    HttpInterceptor,
    HttpHandler,
    HttpRequest,
    HttpResponse,
    HttpErrorResponse
   } from '@angular/common/http';
   import { Observable, throwError } from 'rxjs';
   import { retry, catchError } from 'rxjs/operators';
import { RestService } from './restservice';
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';


@Injectable()
   export class HttpErrorInterceptor implements HttpInterceptor {

    constructor(private rest : RestService , private route : Router){}



    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      // console.log('jcsjdsjd');
      // console.error('xjxfjb');
      // console.log(request);
      // console.log(next);
      return next.handle(request).pipe(catchError(err => {
        console.log(err);
          if (err.status === 401) {
              // auto logout if 401 response returned from api
              // this.authenticationService.logout();
              location.reload(true);
          }

          const error = err.error.message || err.statusText;
          return throwError(error);
      }))
  }
} 

Я также определил перехватчик в поставщиках app.module.ts

  providers: [RestService  , AuthGuard ,   commonRest    ,  {
    provide: HTTP_INTERCEPTORS,
    useClass: HttpErrorInterceptor,
    multi: true
  }],

, который я получаю по запросу с ошибкой 403:

    {
  "messagecode": 403,
  "message": "not valid token!"
}

1 Ответ

0 голосов
/ 17 января 2020

Для использования перехватчика во всем мире, и поставщики находятся в основном модуле, следует добавить @Injectable ({обеспеченный:: root '}) в верхней части перехватчиков, как здесь https://stackblitz.com/edit/angular-http-interceptor-working-for-lazy-loaded-module?file=src / app / core / token-interceptor .service.ts

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