首页 > 解决方案 > 如何在发射观察者中发送相同的值?

问题描述

我有输出值:

@Output() addChanged = new EventEmitter<any>();

我发出的价值为:

this.addChanged.emit(true);

它始终是真正的价值。

因此,在组件中,我尝试像这样听这个值:

  ngAfterViewInit() {
    console.log(this.isAdding);
  }

问题是我总是发送相同的值true,因此第二次ngAfterViewInit对我不起作用。

标签: angular

解决方案


如果您检查 Angular 源代码,EventEmitter您会发现 Angular 实际上是在super.next(value)您每次调用该emit(value)函数时触发的。这意味着您将获得父订阅者的最新值。

来源: https ://github.com/angular/angular/blob/master/packages/core/src/event_emitter.ts#L85

您需要做的就是为您的自定义事件添加一个函数处理程序,例如:

<my-child-component (addChanged)="handlerFunction($event)">

在你的打字稿文件中:

handlerFunction(value){
 console.log(value)
}

推荐阅读