Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态创建的元素上的addEventListener不工作_Javascript_Html_Angular_Typescript - Fatal编程技术网

Javascript 动态创建的元素上的addEventListener不工作

Javascript 动态创建的元素上的addEventListener不工作,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我想将单击事件添加到内部html中显示的图像中。但当我尝试添加它时,它不会起作用 模板 <div [innerHTML]="myHtml"></div> 这是一个问题,这可能是由于在页面循环开始之前仅为元素注册事件侦听器的限制。你有没有试着用渲染器2做得更像角度 this.renderer.listen('img', 'click', (evt) => { console.log('Clicking the document', evt); }); 文档:这

我想将单击事件添加到内部html中显示的图像中。但当我尝试添加它时,它不会起作用

模板

<div [innerHTML]="myHtml"></div>

这是一个

问题,这可能是由于在页面循环开始之前仅为元素注册事件侦听器的限制。你有没有试着用渲染器2做得更像角度

this.renderer.listen('img', 'click', (evt) => {
  console.log('Clicking the document', evt);
});

文档:

这可能是由于在页面循环开始之前,事件侦听器仅为元素注册的限制。你有没有试着用渲染器2做得更像角度

this.renderer.listen('img', 'click', (evt) => {
  console.log('Clicking the document', evt);
});

文档:

它还不在DOM中。对
ngAfterViewInit
执行相同操作:

ngAfterViewInit() {
    const root = document.createElement('div');
    root.innerHTML = this.getHtml();
    const images = root.getElementsByTagName('img');
    Array.prototype.forEach.call(images, (image: HTMLImageElement, i) => {
      image.addEventListener('click', (event: any) => {
        console.log('click', event);
      });
    });
    this.myHtml = root.innerHTML;
  }

它还不在DOM中。对
ngAfterViewInit
执行相同操作:

ngAfterViewInit() {
    const root = document.createElement('div');
    root.innerHTML = this.getHtml();
    const images = root.getElementsByTagName('img');
    Array.prototype.forEach.call(images, (image: HTMLImageElement, i) => {
      image.addEventListener('click', (event: any) => {
        console.log('click', event);
      });
    });
    this.myHtml = root.innerHTML;
  }

您需要使用ngAfterViewInit()来实现这一点, 我已经修改了代码,工作正常

请检查链接


希望这有帮助。

您需要使用ngAfterViewInit()来实现这一点, 我已经修改了代码,工作正常

请检查链接

希望这有帮助。

您可以使用它来指定
元素。然后,您可以使用以下命令将事件侦听器添加到所有

请注意:

是一个可以自定义的自定义函数。别忘了从'@angular/core'导入{ElementRef}

更多详细信息,请参见可用于指定
元素的之间的差异。然后,您可以使用以下命令将事件侦听器添加到所有

请注意:

是一个可以自定义的自定义函数。别忘了从'@angular/core'导入{ElementRef}


更详细地说,

谢谢,这也是工作,但不是'img'目标好发送所需元素的nativeElement谢谢,这也是工作,但不是“img”目标,而是发送所需的nativeElementelement@SuhelKhan如果您想选择并添加EventListener all
,您可以查看我的answer@Suhel如果您想选择并添加EventListener all
,您可以查看我的答案
onclick() {
    alert("Image clicked");
}