Javascript 不一致的addEventListerner行为7

Javascript 不一致的addEventListerner行为7,javascript,angular,addeventlistener,Javascript,Angular,Addeventlistener,我正在使用innerHTML绑定创建动态a标记,如下代码所示: <span *ngIf="msg" [innerHTML]="msg | sanitizeHtml"></span> 我得到elementselements`列表以添加事件侦听器。单击事件侦听器有时可以工作,但在大多数情况下不工作 我对这种行为感到困惑。我还尝试将代码setTimeout()括起来,但没有成功。您应该使用@HostListener来处理事件 添加条件event.target.matches(

我正在使用
innerHTML
绑定创建动态
a
标记,如下代码所示:

<span *ngIf="msg" [innerHTML]="msg | sanitizeHtml"></span>
我得到
elements
elements`列表以添加事件侦听器。单击事件侦听器有时可以工作,但在大多数情况下不工作


我对这种行为感到困惑。我还尝试将代码
setTimeout()
括起来,但没有成功。

您应该使用
@HostListener
来处理事件

添加条件
event.target.matches('.tradebtn')
以检查元素源

@HostListener('document:click', ['$event'])
   onclick(event) {
   if(event.target.matches('.tradebtn')) {
        console.log(event)
   }
}

span
与代码有什么关系?类为
tradebtn
的元素是否在
querySelectorAll
运行后动态创建?类
tradebtn
的元素是什么?它们是表单中的按钮吗?@JaromandaX
span
只是设置其
innerHTML
的父元素。是
tradebtn
是动态创建的
a
标记。当我使用console.log(元素)时,我会得到所有动态创建的
a
tags.OK,那么什么“不起作用”means@JaromandaX使用
addEventListener
click事件,控制台中是否没有错误?如果您在开发人员工具中检查元素,它是否附加了事件处理程序?谢谢!不知道为什么我的方法行不通。
@HostListener('document:click', ['$event'])
   onclick(event) {
   if(event.target.matches('.tradebtn')) {
        console.log(event)
   }
}