#angular #formarray #reactive-forms #form-control
Вопрос:
Это структура моей формы:
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>
ошибка:
ОШИБКА Ошибка: Не удается найти элемент управления с путем: ‘Выбранный транспорт -> Имя дороги’
Комментарии:
1. Это потому
formControlName="roadName"
, что находится в стадииselectedTransport
оформления. Вам нужно либо изменить структуру вашего htmlformControlName="roadName
-кода, чтобы он находился под[formGroup]="formData"
управлением, либо переместить элементы управления в массив форм и зациклить их в шаблоне
Ответ №1:
В вашем случае элемент управления отображается внутри абстрактного элемента управления formarray, поэтому вам необходимо указать группу форм для всех ваших элементов управления, как указано ниже:
<div [formGroup]="formData">
Road Name: <input type="text" formControlName="roadName">
</div>
Вот рабочий код : stackblitz