我正在使用Angular应用程序,但似乎偶然发现了一个小错误/问题。我的html中有4个可点击区域,每次单击都调用该组件的.ts脚本的功能。到现在为止还挺好。我只想让每个区域都单击一次,但是这似乎不符合我的操作方式(而且我不太清楚为什么)。
clicked(event: Event): void {
// Get coordinates of clicked cell
var elementId: string = (event.target as Element).id;
if(this.answersGiven.includes(elementId)) {
console.log("included");
return;
}
this.answersGiven.push(elementId);
还有html
<table>
<tr>
<td id="A1" (click)="clicked($event);">
</tr>
因此,在第一次单击后,答案应被推入工作正常的数组中。但是,在同一单元格上第二次单击后,它并没有进入if条件。当第三次单击同一单元格时,它可以工作。当我记录事件时,第二次我仅获得“”而不是元素ID。我的猜测是,这可能与某种缓冲区有关,或者该按钮被按下并保持按下状态,但是我找不到与之相关的任何东西。
很高兴提供任何帮助,谢谢:)
答案 0 :(得分:0)
您应该尝试以下操作:
HTML:
<table>
<tr>
<td (click)="clicked($event, 'A1');">
</tr>
TS:
clicked(event: Event, cod: string): void {
// Get coordinates of clicked cell
var elementId: string = (event.target as Element).id;
if(this.answersGiven.includes(cod)) {
console.log("included");
return;
}
this.answersGiven.push(cod);
构建HTML的Angular方法可能已经更改了<td id="A1"
,如果ID保持不变,请使用浏览器开发者工具。