У меня есть это в моем шаблоне:
<input type="button" value="add" (click)="addEnvVar()"/>
<div *ngFor="let envVar of application.env_vars">
<input type="text" name="key" [(ngModel)]="envVar.key">
<input type="text" name="value" [(ngModel)]="envVar.value">
</div>
Код позади addEnvVar()
: this.application.env_vars.push({key:'', value:''});
Когда компонент инициализируется, внутри env_vars
находится один объект, и он прекрасно отображается (поля <input>
заполнены). После того, как я нажму «добавить», я вижу в консоли, что внутри env_vars действительно есть два объекта (второй — «пустой» объект, который я только что добавил), и в представлении действительно есть два <div>
для каждого envVar
, но все 4 <input>
поля пусты.
Что я делаю не так?
ОБНОВЛЕНИЕ
Я думаю, проблема в том, что когда ngFor
производит более одного div
, все входы в каждом div
получают один и тот же жестко закодированный атрибут name
(в моем случае - "ключ" и "значение"), и значение каким-то образом привязано к этому . Я изменил name="key"
на name="key_{{i}}"
(i
— это переменная шаблона, содержащая свойство индекса ngFor
).
Вопрос в том, это путь? Или я все еще что-то упускаю?