У меня есть ng-контейнер, который описывает все мои возможные шаблоны полей формы, по существу, для большого оператора switch в зависимости от метаданных поля:
<ng-template #dynamicFormField let-field="inputField">
<div *ngIf="field.dataTypeName == 'ShortText'">
<mat-form-field class="col-md-6">
<input matInput type="text" [placeholder]="field.attributeLabel" [formControlName]="field.attributeName">
</mat-form-field>
</div>
<div *ngIf="field.dataTypeName == 'LongText'">
<mat-form-field class="col-md-12">
<input matInput type="text" [placeholder]="field.attributeLabel" [formControlName]="field.attributeName">
</mat-form-field>
</div>
<div *ngIf="field.dataTypeName == 'Number'">
<mat-form-field>
<input matInput type="number" [placeholder]="field.attributeLabel" [formControlName]="field.attributeName">
</mat-form-field>
</div>
<ng-template>
У меня есть базовая группа форм, затем одно свойство:группа форм - это массив форм, каждый элемент которого имеет свою собственную группу форм.Например, модель данных выглядит примерно так:
{
name: 'Article Name',
description: 'Some description of the article',
sections: [
{
sectionName: 'Rich text section',
sectionContent: 'Some rich text'
},
{
sectionName: 'Second section',
sectionContent: 'Some rich text'
}
]
}
, где каждое из этих полей имеет соответствующие метаданные, описывающие его свойства формы.
Я хочу иметь возможность повторно использовать оператор переключения вводакак в основной группе форм, так и в группах форм в массиве форм.Тем не менее, внутренняя часть ng-контейнера не может получить доступ к группе форм, определенной входным значением formGroupName для formarray:
<div *ngFor="let field of this.sectionTypeSchemas[section.value.sectionTypeId]">
<div *ngIf="field.isVisible != false" formGroupName="{{i}}">
<ng-container *ngTemplateOutlet="dynamicFormField;context:{ inputField:field }"></ng-container>
</div>
</div>
Ошибка, с которой я сталкиваюсь, заключается в основном в том, что Angular не может найти элементы управления, которые находятся внутри Formarray.FormGroups (то есть sectionName из модели данных), хотя при поиске элементов управления, соответствующих базовым элементам управления formgroup (имя и описание из модели данных), проблем не возникает.Есть ли способ, которым я могу вручную передать ссылку на форму группы в ng-контейнер?Короткий пример можно увидеть здесь .