Angular 6 @ContentChildren не запрашивает расширенный компонент - PullRequest
0 голосов
/ 01 сентября 2018

У меня вопрос по поводу декоратора ContentChildren.

Я хочу создать пользовательский интерфейс контроллера для рабочего стола. Я создал несколько компонентов для обработки ввода контроллера (например, для примера, допустим, стартовая страница может быть такой):

  • ControllerInputWrapperComponent (расширяет ControllerContainerComponent)
    • ControllerContainerComponent
      • Панель (расширяет ControllerContainerComponent)
      • Панель (расширяет ControllerContainerComponent)
    • ControllerContainerComponent
      • Панель (расширяет ControllerContainerComponent)
      • Панель (расширяет ControllerContainerComponent)
      • Панель (расширяет ControllerContainerComponent)
      • DifPanel (расширяет ControllerContainerComponent)

Шаблон ControllerContainerComponent выглядит следующим образом:

<template #host></template> <ng-content></ng-content>

(шаблон является необязательным выбором для создания панелей по шаблону json)

Теперь я хочу, чтобы ControllerContainerComponent запрашивал свои дочерние элементы, которые являются экземпляром ControllerContainerComponent. Если я использую ControllerContainerComponent в качестве селектора в декораторе @ComponentChildren, он возвращает пустой список после инициализации содержимого.

После этого я попытался запросить точный класс (в данном случае PanelComponent), а затем получил некоторые результаты, но они не включали такие компоненты, как DifPanelComponent

Мой вопрос:

Это проблема с angular или я что-то не так сделал?

EDIT:

Я нашел вопрос о стековом потоке, который немного похож, но не совсем дает ответ, который я искал, и не относится к текущей версии angular: Angular 2 - Использование @ContentChildren для фильтрации содержимого компонента

2-е РЕДАКТИРОВАНИЕ:

Вот стек, который демонстрирует мою проблему: https://stackblitz.com/edit/angular-vfmnd3

1 Ответ

0 голосов
/ 02 сентября 2018

Вам может понадобиться provide это. providers:[{provide: ControllerContainerComponent, useExisting:Panel}] Тогда вы сможете запросить его.

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