вы собираетесь сделать это в шаблоне:
<tbody formArrayName="items">
<tr *ngFor="let item of items.controls; let i = index;" [formGroupName]="i">
<td>{{ i + 1 }}</td>
<td><input formControlName="field1" /></td>
<td><input formControlName="field2" /></td>
<td><input formControlName="field3" /></td>
</tr>
</tbody>
вы не хотите повторять директиву имени массива формы для каждой строки, поэтому просто приклейте ее к телу таблицы один раз, и вы необходимо сообщить angular, к какому индексу в массиве он обращается, вы делаете это с помощью директивы имени группы форм с индексом в качестве имени. это правильно строит путь items -> 0 -> field2
, тогда как items -> field2
является недопустимым путем, поскольку он не говорит, какой элемент в массиве, а items
не имеет свойства field2
, это массив групп, у которых есть свойство .
фиксированный блиц: https://stackblitz.com/edit/angular-3sgqqx?file=src / app / hello.component.ts