I'm currently building an Angular website. I create several components using a *ngFor loop. The created components each have a mouse event with which a MatDialog should be opened (MatDialog). The problem is that the dialog does not open properly and the buttons inside do not work. However, as soon as I remove the *ngFor loop and only represent the first element, the dialog works perfectly. Does anyone know this problem and how to fix it or an alternative to the *ngFor loop?
Does not function:
<div *ngFor="let item of elements">
<div (mousedown)="openMatDialog($event)" class="title">{{item.title}}</div>
</div>
Does function:
<div>
<div (mousedown)="openMatDialog($event)" class="title">{{elements[0].title}}</div>
</div>
Function openMatDialog(e):
openMatDialog(e) {
const matDialog = this.dialog.open(
SettingsDialogComponent, { hasBackdrop: true }
);
}
Thanks in advance
Solution: use of trackBy in the *ngFor loop