Есть ли нехакерский способ применения указанных c Angular перехватчиков к различным модулям без дополнительных заголовков или HTTPBackend? - PullRequest
0 голосов
/ 25 февраля 2020

Я создаю веб-приложение с Angular 8, и у меня есть два HTTP-перехватчика. Я хочу, чтобы Interceptor A запускался только при отправке запросов из модуля A. Я хочу, чтобы Interceptor B срабатывал только при отправке запросов из модуля B.

Я мог бы проверять запросы на наличие определенных шаблонов регулярных выражений в перехватчиках, но Я сочту это хакером.

Я могу установить заголовки в соответствии с этим ответом , но я не хочу, чтобы мои службы знали о перехватчиках.

I я не могу использовать HTTPBackend, потому что я хочу перехватчики сработать - я просто не хочу, чтобы оба из них срабатывали при каждом запросе.

У меня есть попробовал поместить их в мои модули так:

MySubmodule1.module.ts

@NgModule({
  declarations: [
    MyComponent1,
    MyComponent2,
    ...
  ],
  imports: [
    RouterModule.forChild(routes),
    ...
    HttpClientModule,
  ],
  providers: [
    MyService1,
    { provide: HTTP_INTERCEPTORS, useClass: InterceptorA, multi: true} 
  ]
})
MySubmodule2.module.ts

@NgModule({
  declarations: [
    MyComponent1,
    MyComponent2,
    ...
  ],
  imports: [
    RouterModule.forChild(routes),
    ...
    HttpClientModule,
  ],
  providers: [
    MyService1,
    { provide: HTTP_INTERCEPTORS, useClass: InterceptorB, multi: true} 
  ]
})

Отсюда они оба запускают каждый запрос, даже запросы других модулей.

Неужели нет простого способа сделать это в 2020 году?

...