您需要在父項中構建整個表單,然後將內部FormGroups傳遞給子項和孫項。因此,父建全的形式:
ngOnInit() {
this.myForm=this._fb.group({
subAppName: ['', [Validators.required]],
vendorDetails: this._fb.group({
buildType: [''],
primaryLang: [''],
product: this._fb.group({
vendorName: [''],
productName: ['']
})
}),
subAppType:['', [Validators.required]],
});
}
從你的父母,在vendorDetails組傳遞給供應商的組件:
<subapp-vendor #vendortest [vendorDetails]='myForm.controls.vendorDetails'></subapp-vendor>
和供應商使用@input爲formgroup:
@Input() vendorDetails: FormGroup;
並在您的視圖中使用該formGroup名稱以及您在父級中定義的formcontrolnames。在這裏你還內formGroup傳遞給此childcomponent的子組件,就像你從父所做的:
<div [formGroup]="vendorDetails">
<label>Built Type</label>
<div class="radio" *ngFor="let buildType of buildTypes">
<label>
<input type="radio" formControlName="buildType" [value]="buildType.value">
{{buildType.display}}
</label>
</div>
<subapp-product #producttest [product]="vendorDetails.controls.product"></subapp-product>
<label>Primary Language</label>
<input type="text" class="form-control" formControlName="primaryLang">
</div>
aaaand那當然使用@input和formGroup product
在產品組件的觀點,就像以上。
這是你的forked plunker
使用'@ output'裝飾http://learnangular2.com/outputs/ – Smit
您可以更新根據您的plunker例如您的文章**代替父..子。 child1 .. ** – Aravind