Настройка
Итак, у меня есть несколько повторно используемых компонентов, которые я пытаюсь использовать вместе.Они следующие:
- SmartNavTileGroup
- SmartNavTile
- RadioCheckboxGroup
- RadioCheckboxWrapper
При реализации в разметке, это выглядит так:
<smart-nav-tile-group>
<smart-nav-tile></smart-nav-tile>
<smart-nav-tile></smart-nav-tile>
</smart-nav-tile-group>
Компонент SmartNavTileGroup
реализует RadioCheckboxGroup
, а компонент SmartNavTile
реализует RadioCheckboxWrapper
.
Таким образом, в результирующей разметке они идут в этомпорядок:
<smart-nav-tile-group>
<radio-checkbox-group>
<smart-nav-tile>
<radio-checkbox-wrapper>
Цель
Цель здесь состоит в том, чтобы RadioCheckboxGroup
имел доступ ко всем экземплярам RadioCheckboxWrapper
в нем.
What I 've Пробовал
До сих пор я пробовал ViewChildren
и ContentChildren
, а также forwardRef
инъекцию и использование общей службы для достижения этой цели.
Проблема
Пока единственная вещь, которая приближает меня к этой работе, - это сервис.
RadioCheckboxGroupService
находится и предоставляется как модулем RadioCheckboxGroup
, так и компонентом.Это дает желаемый результат создания службы для каждого RadioCheckboxGroup
.
Однако всякий раз, когда эта служба внедряется в RadioCheckboxWrapper
, создается третий экземпляр службы, и все экземпляры RadioCheckboxWrapper
помещаются в этот экземпляр RadioCheckboxGroupService
независимо от того, где они находятся на странице.
Поэтому по какой-то причине они создают собственный глобальный синглтон вместо использования отдельных экземпляров, созданных RadioCheckBoxGroup
, и я не могу понять, почему они не используют предоставленный экземпляр службыby RadioCheckboxGroup.
Как видно из этой серии журналов консоли, каждый RadioCheckboxGroup
создает экземпляр RadioCheckboxGroupService
, когда ожидается, однако каждый экземпляр RadioCheckboxWrapper
добавляет себя в третий глобальныйединичный экземпляр RadioCheckboxGroupService
вместо служб, настроенных на RadioCheckboxGroup
:
![enter image description here](https://i.stack.imgur.com/iSIDL.png)
Вопрос
Как я могу получитькаждый экземпляр RadioCheckboxWrapper
использовать службы, созданные и предоставленные их экземплярами-предками RadioCheckboxGroup
, вместо создания глобальной службы и добавления себя к этому?