EventEmitter:如何将结果从事件处理程序发送回“host”组件

时间:2017-12-06 22:39:09

标签: angular

我有一个@Output参数的子组件:

@Output updateThis: EventEmitter<any> = new EventEmitter<any>;

this.updateThis.emit(myObject);

我有一个处理事件的父组件。然后它调用服务来更新对象:

<my-component (updateThis)="onUpdateThis($event)" />

这是我的问题。在父组件尝试修改对象之后,我需要通知子组件是否可以更新它(即服务是否抛出错误)。

我怎样才能将结果发送回子组件?一个想法是向myObject添加新属性(即hasUpdateError)。但还有其他方法吗?例如,我已经看到EventEmitter有一个订阅方法,但在这种情况下我不知道如何使用它。

1 个答案:

答案 0 :(得分:1)

共享服务可能与观察者一样好。因此,当父组件从子组件接收事件时,您可以使用公共set方法来更改Subject .next的状态。子组件将订阅该Subject的Observable以获得新状态。

这里很好地解释了https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service。相同的逻辑可以应用于任何组件,而不仅仅适用于子父级。