Angular 2:从属性指令获取对component属性的引用

时间:2017-03-06 18:58:53

标签: angular typescript angular2-directives

所以,我正在为网格(Ag-Grid)编写一堆过滤器组件。我将在多个位置显示这些过滤器,因此我正在为它们编写一个包装器,以便从不同位置访问它们的值。目前我正在实现一个过滤器抽屉,它将显示过滤器并使用属性指令app-drawer-item来获取对它们的引用:

<app-filter-drawer #drawer [gridRef]="agGrid">

  <app-text-filter app-drawer-item forColumn="AlertSid"></app-text-filter>

  <app-date-filter app-drawer-item forColumn="Name"></app-text-filter>

</app-filter-drawer>

正如您所看到的,会有许多过滤器,因此将它们硬编码到app-filter-drawer中是不明智的。我使用@ContentChildren中的app-filter-drawer来获取对每个指令的引用。

是否可以从app-text-filter指令获取对过滤器组件属性的引用(如app-drawer-item)?我一直在使用ElementRefViewContainer,但我没有看到直接引用组件实例的方法。我能够通过事件绑定到主机来获取它,但是我只需要在用户单击“应用”按钮时访问这些值,并且每次更新值时发出事件似乎都很浪费。组件中还有其他方法,我最终需要从指令中调用它。

如果需要,我可以提供更多信息。谢谢!

1 个答案:

答案 0 :(得分:1)

我找到了一个相对简单的解决方案。您只需在指令中使用^b+: capture-pane即可从注入器树中手动注入最近发现的令牌,该令牌应该是父代:

Injector