你需要在父子中为addressinfo创建一个空组:
this.myForm = fb.group({
'firstname': ['', Validators.required],
'lastname': ['', Validators.required]
'addressinfo': fb.group()
});
那么你需要把这个组控件传递给子组件:
<child [control]="myForm.controls.addressinfo"></child>
在子组件中,你需要为这个控件添加一个输入,并创建与你的Line*字段对应的子控件:
@Component({ ... })
export class ChildComp {
@Input()
control:Control;
ngOnInit() {
this.control.addControl('Line1', new Control('', Validators.required));
this.control.addControl('Line2', new Control('', Validators.required));
}
}
最后,您可以将这些子控件附加到子组件中的输入上:
<div class="field">
<label>Line1</label>
<input type="text" [ngFormControl]="control.controls['Line1']">
</div>
<div class="field">
<label>Line2</label>
<input type="text" [ngFormControl]="control.controls['Line2']">
</div>
这是更新的 plunkr:http://plnkr.co/edit/Bigo3DNnLTixW9ONry1e?p=preview。