Таким образом, вместо того, чтобы иметь вложенную группу FormGroup в том же компоненте, я хочу иметь дочерний компонент, который я могу интегрировать в родительский компонент.
Должны ли элементы управления дочернего элемента быть добавлены в FormBuilder родительского элемента? И как? Я хочу, чтобы в определении группы FormBuilder была указана вся модель, включая дочерние поля.
Я добавил дочерние элементы управления в FormBuilder (как показано ниже, КАК ЕСЛИ они были определены в родительском элементе), и я получаю ошибку:
Невозможно создать свойство 'validator' для строки 'input1'
Ниже приведены четыре файла:
parent.ts
this.myForm = formBuilder.group({
'input1': [null, [Validators.required, Validators.minLength(3)]],
'myNestedGroup': this.formBuilder.group({
'input2': [{ value: '', disabled: false }] ///? correct
})
}
);
parent.html
<child-selector>
</child-selector>
child.ts
import { Component, OnInit, Input } from '@angular/core';
import { FormGroup, AbstractControl, FormBuilder, Validators } from '@angular/forms';
@Component({
selector: 'child-selector',
templateUrl: './child-selector.html'
})
export class ChildComponent implements OnInit {
myInput = 'input2';
formGroup = 'myNestedGroup';
constructor() { }
ngOnInit() {
}
}
child.html
<div [formGroup]="formGroup" >
<input type="text" [formControl] = "myInput" />
</div>