繁体   English   中英

将click事件绑定到动态生成的内容(Angular 4)

[英]Bind click event to dynamically generated content (Angular 4)

我具有以下函数,该函数基本上会生成日期并将其插入到视图中的div之前-我需要对其进行修改,以便能够使用角度渲染器功能使用click事件,但是在下面的代码上遇到了困难:

generateTimestampDiv(date, $this) {
    let parent = document.getElementsByClassName('ui-datepicker-header');
    let minutes = (date.getMinutes()<10 ? '0' : '') + date.getMinutes();
    let datetime = date.toDateString()+' '+date.getHours()+':'+minutes;

    let content = '<div style="background-color: #fafafa; width:90%;">'+ datetime +'</div>';
    $(content).insertBefore(parent[0]);

    // this bit is incorrect
    this.renderer.listen(content, 'click', (event) => {
        this.userClicked(event, this);
    })
}

我需要修改该函数以根据该函数插入内容,但还要监听click事件事件,以便可以将该事件传递给userClicked()函数

使用Angular Renderer2 insertBefore方法

export class AppComponent implements OnInit {
  @ViewChild('clickablediv') el: ElementRef;

  constructor(private _renderer: Renderer2) { }

  ngOnInit() {
    this._renderer.listen(this.el.nativeElement, 'click', (event) => {
      this.generateTimestampDiv(new Date())
    });
  }

  generateTimestampDiv(date) {
    let minutes = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();
    let datetime = date.toDateString() + ' ' + date.getHours() + ':' + minutes;

    const div = document.createElement('div');
    div.style.backgroundColor = "#fafafa";
    div.style.width = "90%";
    div.innerHTML = datetime;

    this._renderer.insertBefore(this.el.nativeElement.parentNode, div, this.el.nativeElement)
  }
}

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM