我有一个 HTML 列表,我在其中动态设置 .active 类。具有此类的元素需要具有打开 MatDialog 的“单击”事件。问题是我在尝试执行类似操作时遇到错误:
Angular 组件 .html 文件
<ul>
<li><span id="asd">asd</span></li>
</ul>
Angular 组件 .ts 文件
constructor(private el: ElementRef) {}
...
...
this.el.nativeElement.querySelector('#asd').addEventListener('click', this.selectTimeslot);
...
...
selectTimeslot() {
let asd2: MatDialogRef<CalendarDialogComponent, any> = this.asd.open(CalendarDialogComponent, { disableClose: true });
asd2.afterClosed().subscribe(result => {
console.log(`Dialog result: ${result}`);
});
}
然后,当我单击列表中的一个元素时,出现错误:
TypeError:无法读取未定义的属性“打开”
当我像这样在 HTML 中静态声明(单击)指令时,一切正常:
<ul>
<li><span (click)="selectTimeslot()">asd</span></li>
</ul>
如何动态地将点击事件添加到 span 元素并能够在 Angular 9 中打开 MatDialog 组件?提前致谢。