让我们假设我们有一个深层嵌套架构,其中包含一个主要组件和3个子组件.例如:
todo->todo list->todo list action bar->todo list button
还有其他组件.
当我们使用EventEmitter时,我们必须将所有层都放到todo组件中.
替代方案是使具有可观察的通信服务从按钮组件与待办事件组件通信.
使用这种或那种方式有什么起伏?我该怎么办?
解决方法
这是一个设计视角.
一般来说,我想到的是,如果应用程序大小是中等到大,那么使用行为主题或重播主题去共享服务,以将消息传输到其他组件.
甚至更好的设计是去ngrxi:e在Angular中使用redux.
唯一的缺点就是你需要为你的动作和减速器编写额外的代码,但优点是所有的逻辑都与在redux世界中被称为哑组件的组件分开.一旦完成,它将使用ngrx dev工具在任何时刻跟踪状态,并且您可以轻松跟踪在何时以及如何调试和添加代码时触发的事件或操作.
只有当您的应用程序大小很小时,我才会建议您使用事件发射器,就像多个嵌套组件一样,您会被意大利面条代码吞没.您无法跟踪所有触发事件,然后最终重新编写代码.
有关使用事件发射器与共享服务LINK的更多信息.有一个特殊问题.