HttpInterceptor не работает для сервисов провайдера внутри компонента - PullRequest
0 голосов
/ 25 апреля 2019

В нашем проекте мы используем сервисы для выполнения запросов API с помощью HttpClient (@ angular / common / http) и наш перехватчик, который добавляет маркер к каждому запросу, работает для каждого запроса, сделанного внутри сервиса, кроме случаев, когда Сервис вызывается из компонента, подобного этому:

@Component({
  selector: 'calendar-period',
  templateUrl: './calendar-period.component.html',
  styleUrls: ['./calendar-period.component.scss'],
  providers: [
    SettingsService
  ]
})
export class CalendarPeriodComponent implements OnInit {

В этом случае HTTP-перехватчик (который загружается из нашего app.module) будет работать везде, кроме службы настроек.

Вот как выглядит наш вызов перехватчика:

{ provide: HTTP_INTERCEPTORS, useClass: HttpConfigInterceptor, multi: true },

Некоторая полезная информация:

  • Этот сервис (settingsService) загружается только здесь
  • Каждый компонент имеет свой собственный модуль, мы пытались загрузить его, он работал, но он больше не был «эксклюзивным» для этого компонента
  • На каждой странице модуль, который загружает модули компонента
  • Мы используем ленивую загрузку для маршрутов
  • Мы попытались поместить перехватчик в модуль страницы, модуль компонента и в сам компонент, ничего не получалось

Чего мы пытаемся достичь с помощью этого: - Многие наши компоненты будут использовать этот сервис для обработки поиска и обновления настроек (вместо того, чтобы делать это каждый раз в каждом компоненте), и чтобы это работало, мы должны быть загружены индивидуально в каждый компонент, так как сервис будет хранить некоторые уникальные данные, такие как идентификатор настроек.

...