Angular EventEmitter与通过服务进行通信

时间:2017-08-10 05:01:48

标签: angular

让我们假设我们有一个深层嵌套架构,其中包含一个主要组件和3层子组件。例如:

todo->todo list->todo list action bar->todo list button

还会有其他组件。

当我们使用EventEmitter时,我们必须将所有层都放到todo组件中。 另一种方法是使用observable进行通信服务,以便从按钮组件与todo组件进行通信。

使用这种或那种方式有什么起伏?我该怎么办?

1 个答案:

答案 0 :(得分:4)

这是一个设计视角。

通常我想到的是,如果应用程序大小是中等到大,那么使用Behaviour SubjectReplay Subject转发共享服务以将消息传输到其他组件。

更好的设计是ngrx i:在Angular中使用redux。 唯一的缺点就是你需要为你的动作和减速器编写额外的代码,但优点是所有的逻辑都与在redux世界中被称为哑组件的组件分开。完成后,使用ngrx dev tools可以随时跟踪状态,并且您可以轻松跟踪在何时以及如何调试和添加代码时触发的事件或操作。< / p>

只有当您的应用程序大小很小时,我才会建议您使用事件发射器,就像多个嵌套组件一样,您会被意大利面条代码吞没。您无法跟踪所有触发事件,然后最终重新编写代码。

有关使用事件发射器与共享服务LINK的更多信息。特别是有一个问题。

有关ngrx LINK的更多信息。此链接使用ngrx v2。

我使用ngrx v.4开发了一个小应用程序,以下是相同git和工作example

的git repo