angular - 移动 div 未触发点击功能
问题描述
我有一个div
正在移动的,因为我每 20 毫秒改变一次它的位置。但是当我点击那个 div 时,关联的功能不起作用。我想知道这是否与 div 位置变化非常快有关。
<div class="box-position"
[style.top.px]="box.top"
[style.left.px]="box.left"
(click)="onTarget(box)"></div>
ngOnit(){
//the observable events occurs each 20ms
this.service.subscribe(data => this.box = data)
}
onTarget(box){
console.log("clicked")
}
这是实时代码
解决方案
在您的示例中,使用ngFor
结构指令并更改对数组中元素的引用。因此,每次更改参考时,角度都会破坏并重新创建 DOM。
这意味着您无法使单击事件正常工作,因为您破坏了侦听单击事件的元素。
有不同的解决方案可以防止重建 DOM:
1)使用ngForTrackBy
输入
html
<ng-template ngFor ... [ngForTrackBy]="trackByFn">
零件
trackByFn(i: number) {
return i;
}
2) 改变对象
boxes: any[]=[{ left: 0, top: 120}];
...
this.boxes[0].left = move++ % 700;
推荐阅读
- python - 在另一台计算机上复制 Python 环境
- r - 如何使用 seq() 和 rep() 和 paste() 生成特定向量?
- android - 任务“:amplifyPush”执行失败
- blazor - 如何托管 Blazor 应用程序?
- arrays - 如何读取文本文件并存储在 C 中的数组中
- python - 正确使用 np.where() 输出数据帧而不是元组
- c++ - 谁能解释以下代码的工作原理?
- sql - 如何使用递增的数字更新字符串值
- azure - 在 Azure Synapse 中,是否确实不鼓励创建临时表?
- python - 即使索引看起来正确,Pandas 也会应用返回索引错误