HttpInterceptor внутри компонента, влияющий на все приложения HttpRequests - PullRequest
0 голосов
/ 23 января 2020

У меня есть библиотека, которая содержит компонент. У этого компонента есть HttpInterceptor для его HttpRequests, который устанавливает заголовок для каждого запроса.

Моя проблема заключается в том, что когда я использую компонент в другом проекте, HttpInterceptor устанавливает заголовки для всех HttpRequests проекта, а не только для HttpRequests компонента.

Любые идеи о том, как можно решить мою проблему.

Спасибо за вашу помощь:)

1 Ответ

0 голосов
/ 23 января 2020

Похоже, у вас не может быть отдельных перехватчиков в приложении. Я проверил это с помощью этого - Interceptors-check

Я испытал на

  • Отдельный родительский и дочерний модули импортированы в компонент приложения отдельно.
  • После импорта дочернего модуля в родительский компонент и родительского в приложение.
  • Я переместил все службы внутри модулей (даже если мне пришлось дублировать код)
  • Я переместил HttpClientModule из родительского и Дочерние модули в модуле приложения.

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

Примечание : Я удалил свой предыдущий ответ, где я упомянул приведенный ниже текст и пример (поскольку мое предположение оказалось НЕПРАВИЛЬНЫМ).

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

// child.module.ts
@NgModule({
  ...
  declarations: [ChildComponent],
  providers: [{
      provide: HTTP_INTERCEPTORS,
      useClass: InterceptorTwo,
      multi: true,
  }],
  exports: [ChildComponent]
})
export class ChildModule{}


// parent.module.ts
@NgModule({
  imports: [
    ... ,
    ChildModule
  ],
  providers: [
    ... , {
      provide: HTTP_INTERCEPTORS,
      useClass: InterceptorOne,
      multi: true,
    }],
  ...
})
export class ParentModule{}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...