【发布时间】:2018-11-08 17:47:45
【问题描述】:
您能否给我一种通过单向绑定在 ngFor 循环中获取输入值的方法?
<div *ngFor="let d of dataList">
<input #inputValue type="text" [ngValue]="d.value">
<button *ngIf="!d.open" (click)="d.open = true">change</button>
<button *ngIf="d.open" (click)="save(d.id, NEWVALUE); d.open = false;">save</button>
<button *ngIf="d.open" (click)="d.open = false">cancel</button>
</div>`
如何设置 NEWVALUE? 用双向绑定很容易。 但点击取消后,值已经改变 因为我不想要。 所以会避免这种方式。
我发现的一个解决方案是使用 (ngModelChange)。
<div *ngFor="let d of dataList">
<input #inputValue type="text" [ngValue]="d.value" (ngModelChange)="dataChanged($event)">
<button *ngIf="!d.open" (click)="d.open = true">change</button>
<button *ngIf="d.open" (click)="save(d.id); d.open = false;">save</button>
<button *ngIf="d.open" (click)="d.open = false">cancel</button>
</div>
private newVal;
dataChanged(val) {
this.newVal = val;
}
save(id) {
saveDb(id, this.newVal);
}
我猜这不是清晰和优化的代码。
据我所知,带有 # 的模板绑定也不适用于 ngFor。喜欢
<div *ngFor="let d of dataList">
<input #inputValue_{{d.id}} type="text" [ngValue]="d.value">
<button *ngIf="d.open" (click)="save(inputValue_{{d.id}}.value); d.open = false;">save</button>
</div>
你有什么好的解决办法吗?
【问题讨论】:
标签: angular binding ngfor oneway