Можете ли вы дать мне способ получения входного значения в цикле 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>
У вас есть хорошее решение для меня?