Angular 仅在某些元素上使用@HostListener(无手动事件绑定)

Angular 仅在某些元素上使用@HostListener(无手动事件绑定),angular,events,Angular,Events,我在一个指令中使用@HostListener,该指令将API调用返回的HTML附加到DOM 所需的行为是,事件仅绑定到指令内部分配的元素,而不是整个文档(请参见 ) 触发事件时,我想检查元素的类型和类,以决定要执行的操作: @HostListener('click', ['$event']) onClick(event) { // check if it is an internal link if (event.toElement.nodeName.toLowerCase() == 'a'

我在一个指令中使用
@HostListener
,该指令将API调用返回的HTML附加到DOM

所需的行为是,事件仅绑定到指令内部分配的元素,而不是整个文档(请参见 )

触发事件时,我想检查元素的类型和类,以决定要执行的操作:

@HostListener('click', ['$event']) onClick(event) {
// check if it is an internal link 
if (event.toElement.nodeName.toLowerCase() == 'a' && event.toElement.className.toLowerCase() == "internal_link") {
   console.log("internal link to: " + event.toElement.href);

    // preventDefault (propagation)
    return false;
} else {
    return;
}

}
这种方法的缺点是,我不能在绑定之前过滤元素(我不想直接访问DOM,因为使用全局事件目标可能与Angular本身创建的HTML冲突)。此外,文档中不鼓励使用本机DOM函数:我从文档中了解到,
@HostListener
是在Angular2中绑定事件的首选方式(该指令负责分配给DOM的元素以及在其上定义的事件)

有没有更好的方法来实现我想要实现的目标,而不需要手动访问DOM