Предоставленная услуга не используется потомками компонентов - PullRequest
0 голосов
/ 18 октября 2018

Настройка

Итак, у меня есть несколько повторно используемых компонентов, которые я пытаюсь использовать вместе.Они следующие:

  • 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

Вопрос

Как я могу получитькаждый экземпляр RadioCheckboxWrapper использовать службы, созданные и предоставленные их экземплярами-предками RadioCheckboxGroup, вместо создания глобальной службы и добавления себя к этому?

1 Ответ

0 голосов
/ 18 октября 2018

Ответ

Решение здесь состояло в том, чтобы гарантировать, что RadioCheckboxWrapper был импортирован в модуль, где был предоставлен RadioCheckboxGroupService.В этом случае его необходимо было импортировать в модуль RadioCheckboxGroup.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...