angular - 为什么使用 event.target 时元素 id 没有得到?
问题描述
当我单击按钮时,我试图获取元素 id,但有时这个 id 没有得到。下面的代码,我正在使用打字稿!
下图!
<div *ngFor="let item of l">
<input type="text" class="form-control">
<button (click)="getRate($event)"><i class="far fa-star" id='1'></i></button>
<button (click)="getRate($event)"><i class="far fa-star" id='2'></i></button>
<button (click)="getRate($event)"><i class="far fa-star" id='3'></i></button>
<button (click)="getRate($event)"><i class="far fa-star" id='4'></i></button>
<button (click)="getRate($event)"><i class="far fa-star" id='5'></i></button>
</div>
基于明星 ID 计算速率的打字稿方法。
getRate(event: Event) {
this.ratesArray.push((((event.target as Element).id as unknown) as number) * 20);
console.log((event.target as Element).id);
console.log((((event.target as Element).id as unknown) as number));
}
解决方案
这有点棘手。一件事是你i
在按钮元素中有标签。如果你点击i
标签,它会给出id,否则不会。在 htmlid
中使用 button 标签
<button (click)="getRate($event)" id='1'><i class="far fa-star" ></i></button>
并从组件
getRate(event: Event) {
var target = event.target || event.srcElement || event.currentTarget;
var id = target.attributes.id;
}
推荐阅读
- kotlin - 从实体自动生成主键获取更新的 id
- sql - R HANA sql查询选择某些列名将列名作为数据框值返回
- c# - 使用底层类型在运行时重新实例化接口引用
- json - 使用 API 创建多个资源(不同类型)的简洁方法
- c# - 一行在c#中声明、比较和返回
- sapui5 - sap.m.Wizard 中的动态步骤添加/删除
- unity3d - Unity3D 2019.3.0b7 录制 VideoCapture.CreateAsync 不调用回调函数
- wpf - Caliburn Micro 内容控制导航
- java - Bin Packing算法中的Bin内容
- javascript - Storybooks webpack 配置:未配置加载程序