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