Я создаю сложную форму на основе шаблонов с помощью Angular 2, которая получает структуру групп и полей из API. API отправляет объект JSON, содержащий группы, которые могут содержать поля и / или подгруппы. Поскольку группы могут иметь подгруппы, я думаю, что самый простой способ справиться с этим - иметь настраиваемый элемент управления FieldGroupComponent, который принимает входной параметр «Группа», и если группа содержит подгруппы, он будет отображать их рекурсивно, с помощью FieldGroupComponent.
Проблема, с которой я столкнулся, заключается в том, что ngForm не распознает элементы управления вводом в FieldGroupComponent как FormControls. NgForm считает, что у него нет элементов управления, и не распознает, что поля недействительны.
Страница формы выглядит примерно так:
<form ngForm (ngSubmit)="submitForm()">
<field-group *ngFor="let group of FormGroups" [group]="group"></field-group>
</form>
И FieldGroupComponent:
@Component({
selector: "field-group",
templateUrl: "./field-group.component.html"
})
export class FieldGroupComponent {
@Input("group") group;
}
И шаблон FieldGroupComponent:
<fieldset>
<h1>{{group.Title}}</h1>
<div *ngFor="let field of group.Fields">
... render field ...
</div>
<div *ngFor="let subGroup of group.FieldGroups">
<field-group [group]="subGroup"></field-group>
</div>
</fieldset>
ControlValueAccessor
. - person Günter Zöchbauer   schedule 14.02.2017