向多个父项发送事件以触发Angular 5

时间:2018-03-15 01:31:30

标签: javascript angular typescript

我有一个main-page.componenent.ts就像这样......

<app-page-component></app-page-component>

然后在我的app-page组件里面我有另一个嵌套组件,如此..

<nested-compoennt></nested-component>

基本上我的应用程序看起来像这样

<app-main-component> // where the function is
    <app-page-component>
       <nested-component></nested-component> // where the button is
    </app-page-component>
</app-main-component>

现在我的嵌套组件中有一个按钮,我想要在顶级父组件上触发一个函数..现在我知道如果我将事件传递给最直接的父,我可以使用事件发射器但是我不确定这是否适用于这种情况..所以我的问题是我怎么能冒泡&#39;一个事件,所以它命中了最多的父容器和触发器和事件?

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

您有两种选择。

第一个选项,您可以让每个组件都有一个广播事件的输出。这可以非常快速地发挥作用,特别是如果它是深度嵌套的。

第二个选项,您可以使用共享服务发送和接收消息。本质上,具有该按钮的组件将在您的服务上调用广播该事件的方法,而您的父组件将使用该服务订阅这些广播并正确播放的事件。

答案 1 :(得分:1)

有很多案例,有点难以理解你的案例。

在我看来, 会有2个操作。

  1. 祖父母&lt; =&gt; parent&lt; =&gt;儿童:事件发射器 (https://angular.io/guide/component-interaction#!#bidirectional-service

  2. 使用服务:定义服务并调用子组件来设置数据或创建事件,祖父母订阅值更改或事件订阅。

  3. 我希望这会有所帮助:)