Angular2以上版本中不同模块之间的通信如何实现?

不是指组件通信,是两个模块之间的通信。
比如点击模块A中某组件的按钮,模块B的某组件进行响应。

阅读 4.8k
3 个回答

这和模块之前并无关系,不管模块在哪都一样的。

而唯一区分的是:

组件通信如果是父子关系的话,通过数据绑定。反之,使用 Service 达到数据共享。

另外一点,Service 注入的位置会影响数据共享,如果说模块之间的话,我建议在ShareModule中建立这个 Service。

当然,你也可以利用 Web Storage 也能轻松解决这个问题,推荐一个插件 angular-web-storage

数据共享可以集成redux

我以前是写安卓的,所以在写Angular2项目中心心念念希望它有类似EventBus这样的时间总线库。看了整个Angular文档,父子组件之间的通信倒是很好解决,不同子组件之间的通信可以使用Service,或者是storage,但是感觉不是很优雅,也想用订阅者模式来处理此问题,后来搜索了一下,发现有人已经解决了,方案很优雅简单,地址如下:angular2子组件的事件传递

我在应用过程中,在Stack Overflow上发现一个很好的回答,不推荐使用EventEmitter,地址如下:
Delegation: EventEmitter or Observable in Angular2

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题