У меня есть следующая Angular форма:
<form [formGroup]="futureForm" (ngSubmit)="onSaveFuture(futureForm.value)">
// ...
<div class="row" *ngFor="let value of atr.values" >
<div class="col-md-6">
<input type="text" class="form-control form-control-sm" value="{{value.prop1}}"
formControlName="values.prop1">
</div>
<div class="col-md-3">
<input type="text" class="form-control form-control-sm" value="{{value.prop2}}"
formControlName="values.prop2">
</div>
<div class="col-md-3">
<input type="text" class="form-control form-control-sm" value="{{value.prop3}}"
formControlName="values.prop3">
</div>
</div>
// ...
</form>
Обратите внимание, что имя formGroup futureForm
, и при отправке мы вызываем onSaveFuture
.
Моя проблема в том, что atr.values
, который проходит через *ngFor
, является массивом. Я хочу, чтобы futureForm.value
(параметр, который передается в функцию saveFuture
), содержал массив с объектами значений в нем при отправке формы.
Возникает следующая проблема. Консоль говорит следующее:
Не удается найти элемент управления с именем: 'values.prop1'
Также при отправке я не получаю нужный массив. atr.values
это даже не массив, а отдельный объект.
Как мне сделать так, чтобы мои разные входы соответствовали их соответствующей записи atr.values
, чтобы значение отображалось и также передавалось как массив для функции onSaveFuture
?
Мой компонент выглядит следующим образом:
export class SomeComponent implements OnInit {
atr: IAtr;
futureForm;
// constructor..
ngOnInit(): void {
// ..
this.futureForm = this.formBuilder.group({
// ..
values: this.atr.values,
});
}
// onSaveFuture..
}
Есть ли что-то, чего мне не хватает, или мне нужно использовать что-то другое, кроме formControlName ?? Заранее спасибо.