单击嵌入式垫图标时禁用按钮事件
Disable button event when embedded mat icon is clicked
我在按钮内有一个垫子图标。按钮定义了一个事件,mat-icon 定义了另一个事件。当我点击 mat-icon 时,它的事件与按钮事件一起被触发,因为 mat-icon 在按钮标签内。我不希望在单击 mat-icon 时触发按钮事件,也不希望在单击按钮时触发 mat-icon(不包括 UI 中的 mat-icon 部分)。这是 angular 框架中 HTML 的片段。
<button type="button" class="" (click)="someevent">
<span >
Text
</span>
<mat-icon class='' (click)="differentevent">
delete
</mat-icon>
</button>
如何解决?我正在使用 Angular 并且点击事件是在打字稿中定义的。
您可以使用 $event.stopPropagation()
:
The event.stopPropagation()
method stops the bubbling of an event to parent elements, preventing any parent event handlers from being executed.
只需将 mat-icon 标记替换为:
<mat-icon (click)="$event.stopPropagation(); differentevent()">delete</mat-icon>
因此,当您单击删除图标时,它会停止事件冒泡,因此不会调用您的父单击事件,然后它会调用下一个方法。
stopPropagation()
的顺序并不重要 - 您也可以将其用作:
<mat-icon (click)="differentevent(); $event.stopPropagation()">delete</mat-icon>
我在按钮内有一个垫子图标。按钮定义了一个事件,mat-icon 定义了另一个事件。当我点击 mat-icon 时,它的事件与按钮事件一起被触发,因为 mat-icon 在按钮标签内。我不希望在单击 mat-icon 时触发按钮事件,也不希望在单击按钮时触发 mat-icon(不包括 UI 中的 mat-icon 部分)。这是 angular 框架中 HTML 的片段。
<button type="button" class="" (click)="someevent">
<span >
Text
</span>
<mat-icon class='' (click)="differentevent">
delete
</mat-icon>
</button>
如何解决?我正在使用 Angular 并且点击事件是在打字稿中定义的。
您可以使用 $event.stopPropagation()
:
The
event.stopPropagation()
method stops the bubbling of an event to parent elements, preventing any parent event handlers from being executed.
只需将 mat-icon 标记替换为:
<mat-icon (click)="$event.stopPropagation(); differentevent()">delete</mat-icon>
因此,当您单击删除图标时,它会停止事件冒泡,因此不会调用您的父单击事件,然后它会调用下一个方法。
stopPropagation()
的顺序并不重要 - 您也可以将其用作:
<mat-icon (click)="differentevent(); $event.stopPropagation()">delete</mat-icon>