Angular 6 @ContentChildren不查询扩展组件

时间:2018-09-01 14:41:25

标签: angular components angular6

我对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之类的组件

我的问题是:

这是棱角问题还是我做错了事?

编辑:

我在stackoverflow上发现了一个类似的问题,但是并没有给出我一直在寻找的答案,并且不是关于angular的当前版本的:Angular 2 - Using @ContentChildren for filtering a component's content

第二次编辑:

这是一个演示我的问题的堆栈闪电战:https://stackblitz.com/edit/angular-vfmnd3

1 个答案:

答案 0 :(得分:0)

您可能需要provideproviders:[{provide: ControllerContainerComponent, useExisting:Panel}] 然后您就可以查询它。