【问题标题】:Angular Extends Component InteractionAngular 扩展了组件交互
【发布时间】:2017-11-10 18:34:04
【问题描述】:

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

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

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

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

想法?

【问题讨论】:

    标签: angular typescript angular-services angular-components angular4-router


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我没有想过这种方法如何将我们的实现与组件和路由结构相结合。
    猜你喜欢
    • 2020-09-15
    • 2017-08-26
    • 2011-09-01
    • 1970-01-01
    • 2017-08-18
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多