@ langen, для меня это использовать [formGroup] и [formControl].это комментарий этого вопроса в stackoverflow и stackblitz
My Main
<form [formGroup]="formGroup">
<app-personal-details-form [formGroup]="formGroup"></app-personal-details-form>
</form>
//It's in main where I create the formGroup:
formGroup = new FormGroup(
{
name: new FormGroup({
firstname: new FormControl(null, { validators: [Validators.required] }),
lastname: new FormControl(null, { validators: [Validators.required] }),
}),
gender: new FormControl(null, { validators: [Validators.required] }),
address: new FormGroup({
streetaddress: new FormControl(null, { validators: [Validators.required] }),
city: new FormControl(null, { validators: [Validators.required] }),
state: new FormControl(null, { validators: [Validators.required] }),
zip: new FormControl(null, { validators: [Validators.required] }),
country: new FormControl(null, { validators: [Validators.required] })
}),
phone: new FormGroup({
phone: new FormControl(null, { validators: [Validators.required] }),
countrycode: new FormControl(null, { validators: [Validators.required] }),
})
})
Остальная часть компонента:
Личные данные
<div [formGroup]="formGroup">
<app-name-form [formGroup]="formGroup.get('name')"></app-name-form>
<select formControlName="gender">
<option *ngFor="let gender of Gender | keyvalue" [value]="gender.value">{{ gender.value }}</option>
</select>
<app-address-form [formGroup]="formGroup.get('address')"></app-address-form>
<app-phone-form [formGroup]="formGroup.get('phone')"></app-phone-form>
</div>
//and
@Input() formGroup:FormGroup;
Адресная форма
<div [formGroup]="formGroup">
<input type="text" placeholder="Street address" formControlName="streetaddress">
<span *ngIf="formGroup.get('streetaddress').invalid">*</span>
<input type="text" placeholder="City" formControlName="city">
<input type="text" placeholder="State" formControlName="state">
<input type="text" placeholder="Zip" formControlName="zip">
<input type="text" placeholder="Country" formControlName="country">
</div>
//and
@Input() formGroup;
Имя-форма
<div [formGroup]="formGroup">
<input type="text" placeholder="First name" formControlName="firstname">
<input type="text" placeholder="Last name" formControlName="lastname">
</div>
//and
@Input() formGroup;
и т. Д.