angular - 可编辑表 - 当原始值为空时,在 Angular 数据源中输入的值重复
问题描述
我正在尝试基于 Angular 中的基础数据源创建一个可编辑的表,但是当输入一个值时,输入的值会重复。(例如,当我输入 'a' 并离开元素时,它会自行更新为 'aa')
这似乎仅在可编辑属性在初始化时未定义或显式为 null 时发生。
基于此文档的示例:Angular Editable Tables。
export class HelloComponent implements OnInit {
personList: Array<any> = [
{
id: 1,
name: 'Aurelia Vega',
prop: 'something that is not null'
},
{
id: 2,
name: 'Guerra Cortez',
age: 45,
prop: null
}
];
editProp: string;
constructor() {}
ngOnInit(): void {}
updateProp(id: number, event: any) {
const editProp = event.target.textContent;
this.personList[id].prop = editProp;
}
changeProp(id: number, event: any) {
this.editProp = event.target.textContent;
}
}
模板:
<div class="card">
<h3 class="card-header text-center font-weight-bold text-uppercase py-4">
Editable table
</h3>
<div class="card-body">
<div id="table" class="table-editable">
<table
class="table table-bordered table-responsive-md table-striped text-center"
>
<tr>
<th class="text-center">Name</th>
<th class="text-center">
Prop
</th>
</tr>
<tr *ngFor="let person of personList; let id = index">
<td>
<span>{{ person.name }}</span>
</td>
<td>
<span
contenteditable="true"
(keyup)="changeProp(id, $event)"
(blur)="updateProp(id, $event)"
>{{ person.prop }}</span
>
</td>
</tr>
</table>
</div>
<div *ngFor="let p of personList">{{ p.name }}: {{ p.prop }}</div>
</div>
</div>
Stackblitz 在那个 stackblitz 中:尝试在空白表格单元格中输入任何值,您会看到重复项。如果您尝试覆盖第一行的 prop 值,它将按预期覆盖而不是重复。
解决方案
推荐阅读
- c++ - 使用 reverse_iterator 反转数组(向量)
- opencv - 使用 Scipy 进行语义图像分割
- reactjs - 如何动态设置多个 Spring 实例?
- database - 在 Mongodb 上执行关系查询
- c# - 使用 .NET Core 在 Unix/Linux 环境中设置环境变量
- javascript - 使用 fetch 和 ES6 加载本地 JSON 文件
- jenkins - 如何根据容量跳过Jenkins中的阶段?
- h2o - 有没有办法从 H2O 绘制混淆矩阵?
- javascript - 括号符号对 document.querySelector 有效
- bash - 在bash中独立计算偶数和奇数行的平均值