Как создать HttpInterceptors между модулями? - PullRequest
0 голосов
/ 26 октября 2019

Мне любопытно, что примечание об использовании в нижней части 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 { }
...