You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular+TS实现父div可点击,排除删除图标并绑定独立点击事件

解决Angular中点击子元素不触发父元素事件的问题

要实现点击delete图标时只触发自身的deleteTemplate(),不触发外层div的expanderClicked()和itemSelected(),核心是阻止事件冒泡,直接在delete图标的点击事件里调用$event.stopPropagation()即可,不需要额外依赖。

修改后的代码如下:

<div
  [ngClass]="{ 'template-row': !isExpandable, 'folder-row': isExpandable }"
  class="label-with-icons clickable"
  (click)="expanderClicked()"
  (click)="itemSelected()"
>
  <i *ngIf="isExpandable" [ngClass]="getArrowIconClass()"></i><i [ngClass]="getIconClass()"></i>
  <span *ngIf="id" class="name ">{{ name }}</span>
  <span *ngIf="!id" class="name">{{ name }}</span>

  <i *ngIf="!isExpandable" class="io-icon-trash clickable" id="delete" (click)="deleteTemplate(); $event.stopPropagation()"></i>
</div>

原理说明

DOM事件默认会向上冒泡,子元素的点击事件会传递到父级元素。通过在delete图标的点击事件中执行$event.stopPropagation(),可以终止事件的冒泡过程,这样父div的点击事件就不会被触发,只会执行deleteTemplate()。

内容的提问来源于stack exchange,提问作者salma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:51:20