2017-08-10 67 views
3

假设我们得到了深度嵌套架构,其中包含一个主要组件和3个子组件。例如:角度事件发射器与通过服务的通信

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

还会有其他组件。

当我们使用EventEmitter时,我们不得不将所有图层放到todo组件上。 另一种方法是通过一个可观察的通信服务从按钮组件与待办事项组件进行通信。

什么是使用这种方式或其他方式的起伏?我该怎么办?

回答

2

这是一个设计视角。

一般来说,我发现如果应用程序的大小是中等到巨大的,那么去共享服务使用Behaviour SubjectReplay Subject将消息传输到其他组件。

甚至更​​好的设计是去ngrx i:e在Angular中使用redux。 这个唯一的缺点是需要为动作和缩减器编写额外的代码,但优点是所有逻辑都与在redux世界中被称为哑组件的组件分开。一旦完成,它将成为一个使用ngrx dev tools在任何时候跟踪状态的救生员,并且您将很容易追踪何时以及如何调试以及如何添加代码来触发哪个事件或动作。

只有当您的应用程序大小很小时,我会建议您与事件发射器一起使用,因为多个嵌套组件会被吞噬在意大利细面条代码中。你不能跟踪所有的射击事件,然后你最终重新写你的代码。

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

更多关于ngrx LINK。此链接使用ngrx v2。

我一直在使用NGRX第4节的一个小应用程序工作,以下是相同git git的回购和工作example