При попытке * ngFor для массива в угловом формате сгенерировать входной текстовый элемент и привязать его к значению в массиве, я сталкиваюсь с некоторыми проблемами. Значение не связывается должным образом, когда пользователь вводит что-то для ввода текста.
Я попытался запустить changeDetection после обновления массива, но это не помогло.
В этом примере кода ниже я генерирую элемент ввода, нажимая на кнопку добавления, используя массив данных со строковым значением «test». [ngModel] ввода связывается со значением внутри массива. поэтому я ожидаю, что все входные данные будут иметь значение «test».
Но когда мы пытаемся ввести какое-либо значение во вход и затем нажать кнопку добавления, сгенерированный ввод не привязывается к значению в массиве.
https://stackblitz.com/edit/angular-uywkxr
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<button (click)="onAdd()">Add</button>
<br/><br/>
<input
*ngFor="let d of data;let i = index;trackBy:trackByfn"
type="text"
[ngModel]="data[i]"
>
<br/><br/>
data: {{data|json}}
`,
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
data = ['test'];
onAdd() {
this.data.push('test');
}
trackByfn = (index) => index;
}