亲爱的,关于Web组件交互的黄金法则是:
- 父引用直接子项
- 子项不引用父项
- 父->子项:通过方法调用
- 子项->父项:通过事件
这种模式在许多项目中都为我们工作(YUI,JQuery等)那么Angular2呢?
我们应该使用:
- 父级调用视图子级
- 父侦听子事件
还是输入/输出?
首选看起来很漂亮。@angular2 @expert,你怎么看?
感谢大家,加布里埃尔
这取决于您的需要。需要明确的是Output
和events
是一样的。所以流程非常相似:
- 父级通过
Input
将数据传递给子级 - 子项通过
Output
将数据传递给父项,EventEmitter
和父项到子项甚至一个组件到另一个组件进行双向通信。它使用服务注入,其中您的服务将具有Subject
,注入此服务的组件可以订阅或更新主题值。
我认为服务方法是最好的,因为我知道很多人都觉得熟悉这个工作,并且是感觉宾至如归的好方法。如果您使用的是 Angular 材料主题,则不能直接使用 @input()
@output(
) 和@viewchlid
方法进行组件的通信。