在Angular中,可以使用@HostListener来监听某个特定事件,如下所示:
@HostListener('click', ['$event'])
onClick(event: MouseEvent) {
// do something
}
但是,@HostListener似乎并不支持自定义事件的监听。如果我们需要在组件中监听自定义事件,该怎么办呢?
其实,还是有解决的办法的。我们可以在组件中手动创建一个事件触发器,然后使用@HostListener监听该事件触发器。
import { Component, EventEmitter, HostListener } from '@angular/core';
@Component({
selector: 'app-custom-event',
template: ''
})
export class CustomEventComponent {
customEvent: EventEmitter = new EventEmitter();
triggerCustomEvent() {
this.customEvent.emit();
}
@HostListener('customEvent')
onCustomEvent() {
console.log('Custom event has been triggered');
}
}
首先,我们在组件中创建了一个名为customEvent的EventEmitter。当按钮被点击时,触发器会通过其emit()方法发出一个自定义事件。
接下来,在@HostListener中,我们监听名为customEvent的事件。一旦触发器发出自定义事件,onCustomEvent()方法就会被调用。
这样,我们就可以在组件中使用@HostListener监听自定义事件了。需要注意的是,我们需要手动触发自定义事件,而不是像其他已经有的DOM事件,可以直接在模板中绑定。