[英]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.