不是指组件通信,是两个模块之间的通信。
比如点击模块A中某组件的按钮,模块B的某组件进行响应。
我以前是写安卓的,所以在写Angular2项目中心心念念希望它有类似EventBus这样的时间总线库。看了整个Angular文档,父子组件之间的通信倒是很好解决,不同子组件之间的通信可以使用Service,或者是storage,但是感觉不是很优雅,也想用订阅者模式来处理此问题,后来搜索了一下,发现有人已经解决了,方案很优雅简单,地址如下:angular2子组件的事件传递
我在应用过程中,在Stack Overflow上发现一个很好的回答,不推荐使用EventEmitter,地址如下:
Delegation: EventEmitter or Observable in Angular2
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
这和模块之前并无关系,不管模块在哪都一样的。
而唯一区分的是:
组件通信如果是父子关系的话,通过数据绑定。反之,使用 Service 达到数据共享。
另外一点,Service 注入的位置会影响数据共享,如果说模块之间的话,我建议在ShareModule中建立这个 Service。
当然,你也可以利用 Web Storage 也能轻松解决这个问题,推荐一个插件 angular-web-storage。