Внедрение нового экземпляра Сервиса, объявленного в deps поставщика нестандартного сервиса в Angular 2+ - PullRequest
1 голос
/ 13 января 2020

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

Компонент списка 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 <-> Компонент списка.

...