首页 > 解决方案 > 获取在 Angular 中的组件上注册的事件列表

问题描述

我正在尝试确定组件中正在侦听哪些事件。在下面的示例中,customEvent1andcustomEvent2被传递给事件处理程序,并且customEvent3未被使用。有没有办法获得这个列表,特别是在 AfterViewInit 中?

<my-component (customEvent1)="onCustomEvent1($event)" (customEvent2)="onCustomEvent2($event)"></my-component>
export class MyComponent implements AfterViewInit {
  @Output() customEvent1: EventEmitter<object> = new EventEmitter<object>();
  @Output() customEvent2: EventEmitter<object> = new EventEmitter<object>();
  @Output() customEvent3: EventEmitter<object> = new EventEmitter<object>();

  ngAfterViewInit() {
    // Obtain a list of what events that were registered (['customEvent1', 'customEvent2'])
  }
}

标签: angular

解决方案


您可以通过访问observers属性来做到这一点,因为 EventEmitter 扩展了 RxJs 主题:

ngAfterViewInit() {
  console.log(!!this.customEvent1.observers.length); // Will output false if not used
}

推荐阅读