angular 中对动态生成的html进行监听。

2019-10-25  本文已影响0人  Mrhy1996

环境

angular8

问题概述:

前端的html代码是后台数据返回的,前端用了

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

去解析,问题为对innerHtml中的代码中的img添加click的点击事件。

解决思路:

<img (click)="test()"

实际测试,发现click事件不生效。

  previewVisible = false;
    previewImage: string;
  constructor(private  el: ElementRef, private renderer: Renderer2) {
    }
  /**
     * 用renderer监测图片点击事件,这块代码放进ngOninit()中就行,只要是页面进行点击,就会触发监听
     */
    monitoreByRenderer() {
        this.renderer.listen(this.el.nativeElement, 'click', (event) => {
            if (event.target.tagName === 'IMG') {
                event.stopPropagation();
                this.previewImage = event.target.currentSrc;
                console.log(this.previewImage);
                this.previewVisible = true;
            }
        });
    }

html:

<nz-modal
        [nzVisible]="previewVisible"
        [nzContent]="modalContent"
        [nzFooter]="null"
        [nzMask]="false"
        (nzOnCancel)="previewVisible = false"
        nzWidth="800px">
    <ng-template #modalContent>
        <img [src]="previewImage" [ngStyle]="{ width: '100%' }"/>
    </ng-template>
</nz-modal>

这是用的renderer2的内容,其实他还有很多功能,需要的可以去官网看一下他的api;
简单解释一下业务场景:点击图片,进行图片的放大预览查看,通过上述代码就可以进行实现。

上一篇 下一篇

猜你喜欢

热点阅读