Events 角度2在嵌套组件中引发事件

Events 角度2在嵌套组件中引发事件,events,angular,Events,Angular,这是一个有点主观的问题,但我想收集一些意见,以检查我的想法是否正确 当从嵌套组件引发事件时,MessageBus方法在哪一点上优于冒泡事件 以下面的示例为例,用户可以选择从网格中删除卡片: 如果我们将此布局视为: grid.component ├── card.component │ ├── image.component │ ├── text.component │ ├── closebutton.component 如果我想在网格组件中处理closebutton cl

这是一个有点主观的问题,但我想收集一些意见,以检查我的想法是否正确

当从嵌套组件引发事件时,MessageBus方法在哪一点上优于冒泡事件

以下面的示例为例,用户可以选择从网格中删除卡片:

如果我们将此布局视为:

grid.component    
├── card.component
│   ├── image.component
│   ├── text.component
│   ├── closebutton.component
如果我想在网格组件中处理closebutton clicked事件,我需要将事件从close冒泡到卡片,然后再到网格(注意:这不是一个非常复杂的例子,但我希望可以很容易地遵循)

或者,我可以实现MessageBus之类的东西,作为我的组件的单例/提供者,它可以引发和侦听消息。我可以从“X”按钮触发一个关闭事件,并在树的顶部监听它。这意味着我不必担心将事件链接在一起,并保持布局更整洁

这里每种方法的优缺点是什么

编辑:我看到了基于“基于意见”问题的接近票数;但我想在这里直接回答每种方法的优缺点,而不是建议首选方案。谢谢


编辑2:与我自己的感受(以及在评论中表达的感受)相反,我偶然发现了这一点,这似乎意味着消息服务是一个受支持的选项…

冒泡事件是AFAIAC的首选方式。要做到这一点可能需要做更多的工作,但这一切都与方法的一致性有关。“聪明vs愚蠢”模式的产生有几个原因,如果你在这里打破了它,你很可能在不久的将来会后悔(相信我,我曾经去过那里)。冒泡事件是一种方式。@KwintenP感谢您的输入!我也有同样的想法——我以前写过MessageBus的设计,但我总是担心它被下一个来开发功能区的人过度使用/误用。我很高兴。基本上,我和每个开始使用智能和哑组件的人的讨论都是一样的。一致性是关键。