Ошибка: не удается найти элемент управления с путем: «FormArray -> FormControlName» Angular

Это структура моей формы:

this.formData = new FormGroup({
  selectedAnimal: new FormArray([], [Validators.required]),
  selectedTransport: new FormArray([], [Validators.required]),
  roadName: new FormControl({ disabled: true, value: null }, Validators.required),
  roadZip: new FormControl({ disabled: true, value: null }, Validators.required),
  planeName: new FormControl({ disabled: true, value: null }, Validators.required),
  planeZip: new FormControl({ disabled: true, value: null }, Validators.required)
});

Соответствующий HTML

<form [formGroup]="formData" (ngSubmit)="onSubmit()">
  <div class="animal-checkbox-group" formArrayName="selectedAnimal">
    <!-- multiple checkbox options, selecting one is mandatory -->
  </div>

  <div class="animal-checkbox-group" formArrayName="selectedTransport">
    <!-- multiple checkbox options, selecting one is mandatory -->
    <div class="if-checkbox-1-selected">
      <!-- conditional checkbox: if checkbox is selected -> new new form controls -> they should be defined for successful validation -->
      <input type="text" formControlName="roadName">
    </div>
  </div>
</form>

ОШИБКА:

ОШИБКА Ошибка: не удается найти элемент управления с путем: 'selectedTransport -> roadName'

рабочий пример stackblitz


person Kinley Christian    schedule 08.05.2021    source источник
comment
Это потому, что formControlName="roadName" находится под selectedTransport formArray. Вам нужно либо изменить структуру вашего html, чтобы formControlName="roadName было ниже [formGroup]="formData", либо переместить элементы управления в formArray и зациклить их в шаблоне.   -  person Yuriy    schedule 08.05.2021


Ответы (1)


В вашем случае управление отображается внутри абстрактного элемента управления formarray, поэтому вам необходимо указать группу форм для всех имен ваших элементов управления, как указано ниже:

<div [formGroup]="formData">
    Road Name: <input type="text" formControlName="roadName">
</div>

Вот рабочий код: stackblitz

person Devang Patel    schedule 08.05.2021