В нашем проекте мы используем сервисы для выполнения запросов 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) загружается только здесь
- Каждый компонент имеет свой собственный модуль, мы пытались загрузить его, он работал, но он больше не был «эксклюзивным» для этого компонента
- На каждой странице модуль, который загружает модули компонента
- Мы используем ленивую загрузку для маршрутов
- Мы попытались поместить перехватчик в модуль страницы, модуль компонента и в сам компонент, ничего не получалось
Чего мы пытаемся достичь с помощью этого:
- Многие наши компоненты будут использовать этот сервис для обработки поиска и обновления настроек (вместо того, чтобы делать это каждый раз в каждом компоненте), и чтобы это работало, мы должны быть загружены индивидуально в каждый компонент, так как сервис будет хранить некоторые уникальные данные, такие как идентификатор настроек.