【发布时间】:2016-02-02 06:48:28
【问题描述】:
我有一个充当搜索栏的组件。它可以发出 api 请求并通过@Output 和EventEmitter 将结果提供给应用程序的其余部分,但我也希望一个函数能够以另一种方式运行。搜索栏组件保留了它的搜索历史,我想为父组件提供一种清除历史的方法。我能想到的最好的办法就是以某种方式从父组件调用我的搜索栏中的方法。
我想出的最好方法(但无法正确实施)是尝试将EventEmitter 传递到我的搜索栏,然后孩子订阅父母的事件。 @Input 在构造函数时尚未完成绑定,因此实际执行此操作会很棘手。
我想我可以尝试将历史记录存储在父组件中,但是搜索栏是一个组件的原因是因为它会出现在多个地方,这不符合关注点分离,所以似乎最好保留搜索栏组件中的历史记录。
父组件如何调用子组件上的函数?
【问题讨论】:
-
将搜索历史放在服务中,您的子组件可以绑定到服务'历史'实例变量。该服务可以清楚地表明父母可以调用。只是一个想法。还没试过。
-
一本不错的读物 - learnangular2.com/viewChild
标签: angular