Мне любопытно, что примечание об использовании в нижней части Angular docs на HttpInterceptors содержит:
Чтобы использовать один и тот же экземпляр HttpInterceptors для всего приложенияимпортируйте HttpClientModule только в ваш AppModule и добавьте перехватчики в инжектор корневого приложения. Если вы импортируете HttpClientModule несколько раз в разные модули (например, в ленивые загрузочные модули), каждый импорт создает новую копию HttpClientModule, которая перезаписывает перехватчики, предоставляемые в корневом модуле.
Я нене понимаю, как это сделать. Как я могу получить корневой инжектор приложения и добавить в него HttpInterceptor моих лениво загруженных модулей?
Похоже, что Как импортировать Angular HTTP-перехватчик только для ChildМодуль также пытается ответить на этот вопрос, но ответ там также неясен для меня.
Почему это не работает, и как правильно добавить второй загруженный ленивый перехватчик?
AppModule
@NgModule({
imports: [RouterModule.forRoot(routes)], // routes contains a lazy load module
declarations: [AppComponent],
bootstrap: [AppComponent],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: TokenInterceptorService,
multi: true,
}
]
})
export class AppModule { }
Ленивый загруженный дочерний модуль
@NgModule({
imports: [
LazyRoutingModule
],
declarations: [ChildComponent],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: CacheInterceptorService,
multi: true,
}
]
})
export class LazyModule { }