angular - 角材料 | 按下按钮文本时,Material Button 的行为有所不同
问题描述
考虑以下代码:
HTML:
<button mat-flat-button id="test" (click)="toggle($event)">Click me!</button>
零件:
toggle(event) {
let id: string = (event.target as Element).id;
console.log(id)
console.log(event.target)
}
按下按钮将触发toggle
以事件为参数的函数。系统将记录"test"
(id) 和一个按钮事件。
按下按钮上的文本将记录一个未定义的 id 和一个span
with classmat-button-wrapper
问题:如果按下按钮文本我想获取按钮事件目标(而不是跨度事件目标),我该如何实现?
解决方案
点击事件的行为正确。在 JavaScript 中,当在源元素上触发事件时,它会从源“冒泡”并通过祖先元素树向上传播。
所以当你有这样的 DOM 结构时:
<button mat-flat-button>
<span>Click me!</span>
</button>
上的点击事件span
将传播到button
文档根目录。
如果您想获得按钮元素,您可以使用模板引用变量并将其传递给您的事件处理程序:
<button mat-flat-button id="test" #testButton (click)="toggle(testButton)">Click me!</button>
推荐阅读
- api - 用于股票价格警报的 Discord Bot
- excel - Excel VBA Page-Setup - 添加 HPage-Breaks 后适合宽度的页面失去了它的价值
- docker - 配置 SSL 两个不同的容器。一个在 443 上。一个在非 443 上。两个 Nginx
- java - 动态 Json 到 Java Pojo
- google-sheets - 如何使用谷歌表格公式确定单元格是否有图像
- excel - VBA在跨多个工作表的数据透视表的一个字段中选择全部并取消选择0和空白
- iis - 如何将 Blazor WebAssembly 核心托管自包含应用程序部署到 IIS
- c++ - 您应该如何以及何时为用户定义类型的集合定义概念?
- python - 如何使用模块 dateutil 仅打印日期?
- excel - Error 424 when concatenating fields in a VBA SQL statement