Angular 扩展组件交互

Angular Extends Component Interaction

我和我的合作伙伴正在开发一个 Angular 4 应用程序,其中最高级别的组件 (AppComponent) 有一个组件(我们将称为 UndoComponent)在整个应用程序中持续存在。我们在 AppComponent 中有一个路由器出口,对于这个例子,假设路由器当前正在显示 ContentComponent。

有时 ContentComponent 中的项目可能需要与 UndoComponent 对话。例如,当触发某个事件时,我们可能希望将一些信息推送到 UndoComponent 内部的堆栈中。所以我们需要做一些事情来让 ContentComponent 告诉 AppComponent 更新 UndoComponent 的堆栈。

我知道可以通过使用共享服务和 Observables 来从子组件(特别是路由子组件)更新父组件,但是我的合作伙伴建议我们让 ContentComponent 扩展 AppComponent 然后使用 AppComponent 内部的方法来更新撤消组件。

我对这个解决方案感到不安。我找不到任何关于为什么应该或不应该使用组件继承进行 parent/child 通信的信息。我确实觉得这样做会容易得多,这样我们就不必在我们的服务中继续创建可观察对象来进行这些类型的更新。

想法?

我只使用服务和 Observables,我认为大多数开发人员都会同意。我什至看不到尝试不同方法的好处,尤其是在单一情况下。文档甚至概述了使用服务进行组件间通信。此外,有了服务,任何更新都不需要重新评估解决方案。例如,现在您有一个加载路由组件的路由器出口,但是如果您将其更改为带有子路由的路由组件会怎样。该过滤器将如何备份以更新 UndoComponent。如果您有一项服务,您只需继续注入该服务,无论您的路由器出口有多深,或者您可能无法预见的任何其他变化,它仍然可以毫不费力地工作。