angular - 获取在 Angular 中的组件上注册的事件列表
问题描述
我正在尝试确定组件中正在侦听哪些事件。在下面的示例中,customEvent1
andcustomEvent2
被传递给事件处理程序,并且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'])
}
}
解决方案
您可以通过访问observers
属性来做到这一点,因为 EventEmitter 扩展了 RxJs 主题:
ngAfterViewInit() {
console.log(!!this.customEvent1.observers.length); // Will output false if not used
}
推荐阅读
- node.js - 如何从 npm 包中获取 *.min.js 文件
- image - 乳胶:水平绘图时 mbox() 上方的文本?
- snowflake-cloud-data-platform - Snowflake Security - 授予修改视图
- html - 在 Intellij IDEA 中重新格式化代码和 CSS 补全
- nginx - 重置请求标头时重写 URL - nginx
- java - 我的 JavaFX 文件无法从 JavaFX 找到或加载应用程序类
- python-3.x - 如何捕获 pyistaller.__main__.run 的输出
- java - 理解jar命令行
- python - 使用 Pandas 从 Excel 文件中读取日期并对其进行排序时出错
- unrecognized-selector - -[ECSlidingViewController notifyWhenInteractionChangesUsingBlock:]:无法识别的选择器发送到实例