我和我的合作伙伴正在开发一个Angular 4应用程序,其中最高级别的组件(AppComponent)有一个组件(我们称之为UndoComponent),它在整个应用程序中都会持续存在。我们在AppComponent中有一个路由器插座,对于这个例子,我们说路由器当前正在显示ContentComponent。
有时,ContentComponent中的某个项可能需要与UndoComponent通信。例如,当某个事件被触发时,我们可能想要将一些信息推送到UndoComponent内的堆栈中。所以我们需要做一些事情来让ContentComponent告诉AppComponent更新UndoComponent的堆栈。
我知道通过使用共享服务和Observables可以实现从子级更新父级(特别是路由子组件),但我的合作伙伴建议我们使ContentComponent扩展AppComponent,然后使用AppComponent中的方法更新UndoComponent。
我对这个解决方案感到不安。我无法找到有关为什么应该或不应该使用组件继承进行父/子通信的任何信息。我觉得这样做会容易得多,所以我们不必在我们的服务中继续创建observable来实现这些类型的更新。
思想?
答案 0 :(得分:1)
我只是使用服务和Observables,我认为大多数开发人员会同意。我甚至没有看到尝试不同方法的好处,特别是对于一个单一的情况。文档甚至概述了使用服务进行组件间通信。此外,对于服务,任何更新都不需要重新评估解决方案。例如,现在您有一个路由器插座可以加载路由组件,但是如果您将其更改为具有子路由的路由组件,该怎么办?如何过滤备份以更新UndoComponent。如果您有服务,您将继续注入该服务,无论您的路由器插座有多深,或者您可能无法预见的任何其他更改,它仍然可以毫不费力地工作。