我有一个父组件,它基本上是由两个子组件组成的表单,每个子组件由一堆inputs. 这是父组件模板:
<!-- Bunch of user selected filters -->
<app-filters #filters>
</app-filters>
<!-- Bunch of user selected grouping options -->
<app-grouping-options #groupingOptions>
</app-grouping-options>
<!-- Emit an event with the composed query so
other component can recover and show the data
to the user -->
<button (click)="emitQuery(filters.getFilteringCriteria(), groupingOptions.getGroupingCriteria())">Search</button>
Run Code Online (Sandbox Code Playgroud)
我感兴趣的部分是filters.getFilteringCriteria()和groupingOptions.getGroupingOptionsCriteria()方法调用。我不确定这是否是一个好的做法,特别是因为它似乎打破了预期的数据流:从父级到子级通过属性绑定,从子级到父级通过 events。但是我真的不知道在这种情况下如何进行,因为搜索的功能确实是一个方法,而不是一个属性。
除此之外,引用子组件的最佳方法是什么?通过模板变量或使用@ViewChild?
谢谢你的帮助。
小智 6
这不是最佳实践,因为这意味着您的组件是紧密耦合的(这意味着您的第一个组件依赖于其他 2 个)。
如果您想使用最佳实践,请依赖于@Input您的过滤器(更改子项中的过滤器将更改父项中的过滤器)和@Output分组选项(使用事件发射器将事件传播到父项)。
现在不要误会我的意思:做你所做的完全没问题。这只是意味着,如果您想这样做,您将不得不加倍努力使您的组件通用。
如果没有,那就保留这个,即使 SOF 上的人告诉你不要这样做。您不会被迫重用组件!
| 归档时间: |
|
| 查看次数: |
968 次 |
| 最近记录: |