Angular - *ngFor 创建的输入导致在触发模糊事件时显示重复值
Angular - inputs created by *ngFor causes duplicate values to display when blur event fires
当用户在输入框和选项卡中输入数据时,blur 事件会更新 *ngFor(1 值)中使用的基础数组。 DOM 但是显示 2 个重复值。
有关显示该问题的工作代码,请参阅 stackblitz:
https://stackblitz.com/github/mpierce5/duplication-error/tree/master
正如@penleychan 所说,当您需要更改 ngFor 使用的项目时使用对象。我的意思是用这种方式声明你的模型:
this.testList = [
{ value: '-- placeholder --' },
{ value: '-- placeholder --' },
{ value: '-- placeholder --' },
{ value: '-- placeholder --' },
];
然后像这样绑定它:
<input
*ngFor="let testUnit of testList; let i = index"
(blur)="editItem($event.target.value, i)"
class="test-input"
placeholder="Change Me"
[attr.value]="testUnit.value == '-- placeholder --' ? '': testUnit.value">
<div class="test-value-area">
<div class="test-value-area-title">Array Values</div>
<p *ngFor="let testUnit of testList">{{testUnit.value}}</p>
</div>
有关详细信息,请参阅 here
很好的答案 Fartab。我只想再添加一件事,也更新 editItem 方法:
public editItem(value, index: number) {
this.testList[index] = {"value": value};
}
当用户在输入框和选项卡中输入数据时,blur 事件会更新 *ngFor(1 值)中使用的基础数组。 DOM 但是显示 2 个重复值。
有关显示该问题的工作代码,请参阅 stackblitz: https://stackblitz.com/github/mpierce5/duplication-error/tree/master
正如@penleychan 所说,当您需要更改 ngFor 使用的项目时使用对象。我的意思是用这种方式声明你的模型:
this.testList = [
{ value: '-- placeholder --' },
{ value: '-- placeholder --' },
{ value: '-- placeholder --' },
{ value: '-- placeholder --' },
];
然后像这样绑定它:
<input
*ngFor="let testUnit of testList; let i = index"
(blur)="editItem($event.target.value, i)"
class="test-input"
placeholder="Change Me"
[attr.value]="testUnit.value == '-- placeholder --' ? '': testUnit.value">
<div class="test-value-area">
<div class="test-value-area-title">Array Values</div>
<p *ngFor="let testUnit of testList">{{testUnit.value}}</p>
</div>
有关详细信息,请参阅 here
很好的答案 Fartab。我只想再添加一件事,也更新 editItem 方法:
public editItem(value, index: number) {
this.testList[index] = {"value": value};
}