Angular - Http Interceptor не стреляет - PullRequest
0 голосов
/ 05 апреля 2020

По какой-то причине я не могу понять, почему мой перехватчик не работает. Код ниже - это то, что я использую для моего перехватчика. У меня также есть 2 других перехватчика, которые работают нормально, поэтому я не знаю, почему LoadingInterceptor ниже не срабатывает.

@Injectable()
export class LoadingInterceptor implements HttpInterceptor {
  constructor(private loadingService: LoadingService) {}

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    this.showLoader();
    console.log('Intercept executed') // No log in the console shows up

    return next.handle(request).pipe(
      tap(
        (event: HttpEvent<any>) => {
          if (event instanceof HttpResponse) {
            this.hideLoader();
          }
        },
        (error: any) => {
          this.hideLoader();
        }
      )
    );
  }

  private showLoader(): void {
    console.log('Show Loader'); // no log in the console shows up
    this.loadingService.show();
  }

  private hideLoader(): void {
    console.log('Hide Loader'); // no log in the console shows up
    this.loadingService.hide();
  }
}

export const LOADING_PROVIDER: ClassProvider = {
  provide: HTTP_INTERCEPTORS,
  useClass: LoadingInterceptor,
  multi: true
};

LoadingService на случай, если это имеет значение (LoadingService работает правильно).

@Injectable({
  providedIn: 'root'
})
export class LoadingService {
  private subject = new Subject<LoadingState>();

  constructor() {}

  loadingInit(): Observable<LoadingState> {
    return this.subject.asObservable();
  }

  show() {
    this.subject.next(<LoadingState>{ show: true });
  }

  hide() {
    this.subject.next(<LoadingState>{ show: false });
  }
}

А вот core.module.ts

 @NgModule({
  declarations: [],
  imports: [CommonModule],
  providers: [
    LOADING_PROVIDER,
    RETRY_PROVIDER,
    HANDLE_ERROR_PROVIDER
  ]
})

export class CoreModule {}

app.mdoule .ts

 @NgModule({
  declarations: [AppComponent, NotificationsComponent, LoaderComponent],
  imports: [BrowserModule, AppRoutingModule, HttpClientModule],
  providers: [CoreModule],
  bootstrap: [AppComponent]
})
export class AppModule {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...