По какой-то причине я не могу понять, почему мой перехватчик не работает. Код ниже - это то, что я использую для моего перехватчика. У меня также есть 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 {}