在 angular 中处理按钮点击事件时,若事件目标(event.target)是子元素(如 `
在使用 Angular Material 的 mat-icon-button 时,HTML 渲染后实际的点击事件目标(event.target)往往不是
要准确获取包裹图标的父
download(event: MouseEvent) {
const parentButton = event.target instanceof Node
? event.target.parentNode
: null;
if (parentButton && parentButton instanceof HTMLElement && parentButton.tagName === 'BUTTON') {
console.log('Found parent button:', parentButton);
// ✅ 安全执行后续逻辑,例如添加 loading 状态、禁用按钮等
} else {
console.warn('Parent is not a BUTTON element');
}
}⚠️ 注意事项:
download(event: MouseEvent) {
// ✅ 推荐:event.currentTarget 始终等于绑定 (click) 的 button 元素
const button = event.currentTarget as HTMLButtonElement;
console.log('Bound button:', button);
}✅ 总结:优先使用 event.currentTarget 获取事件绑定的目标元素
(即