В основном я пытаюсь создать модуль, который имеет компонент списка, который я хочу использовать повторно.
Компонент списка get получает сервис (сервис B), внедренный в его конструктор: constructor(@Optional() private listService?: ServiceB) {}
Существует также другая служба (служба A) с конструктором: constructor(private is: ServiceB) {}
, которая, в свою очередь, используется для связи с компонентами, использующими компонент списка.
ServiceA is экспортируется как функция провайдера, чтобы скрыть существование Сервиса B:
export let ListServiceProvider = {
provide: ServiceA,
useFactory: (is: ServiceB) => new ServiceA(is),
deps: [ServiceB]
};
Чего я хочу добиться, так это чтобы каждый компонент списка получал свой собственный набор сервисов, где Сервис A внедрялся во внешний компонент, в то время как ServiceB вводится как в службу A, так и в сам компонент списка.
На данный момент служба A создается для каждого компонента списка, но служба B является общей для всех экземпляров службы A.
Как достичь вышеуказанного?
Поток данных тогда будет: Родительский компонент <-> ServiceA <-> Сервис B <-> Компонент списка.