表单内的多个子组件 - Angular 2
Multiple child component inside form - Angular 2
我正在处理大表单,所以我计划将表单截断为多个子组件,这有助于轻松集成和维护。我正在尝试使用表单生成器来实现这一点。
mainform.html
<form novalidate (ngSubmit)="onSubmit(formDetail);" [formGroup]="formDetail">
<label>
<span>Name</span>
<input
type="text"
placeholder="Enter emp name"
formControlName="name">
</label>
<app-userinfo></app-userinfo> <!-- Child component 1 -->
<app-useracc></app-useracc> <!-- Child component 2 -->
</form>
mainform.ts
export class MainformComponent implements OnInit {
formDetail: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.formDetail= this.formBuilder.group({
name:'',
userinfo: this.formBuilder.group({
userid: '',
userph: ''
}),
useracc: this.formBuilder.group({
useracc: '',
usertransfer: ''
})
});
}
onSubmit(value:User){
debugger;
}
}
Console.log
formControlName must be used with a parent formGroup directive. You'll want to add a formGroup
是否可以将嵌套表单组件作为单独的子组件?
您需要使用 Input()
并将子 FormGroup
传递给 child。我在这里稍微改变了一下,将组命名为 useraccount
而不是 useracc
以将控件与组分开:
您 parent 中用户帐户的子组:
...
useraccount: this.formBuilder.group({
useracc: '',
})
...
因此,parent 中的相关 child 组件标记应如下所示:
<app-useracc [useraccount]="formDetail.controls.useraccount"></app-useracc>
然后在您的 child 组件中添加输入:
@Input() useraccount: FormGroup;
模板可能如下所示:
<div [formGroup]="useraccount">
<input formControlName="useracc">
</div>
工作sample
我正在处理大表单,所以我计划将表单截断为多个子组件,这有助于轻松集成和维护。我正在尝试使用表单生成器来实现这一点。
mainform.html
<form novalidate (ngSubmit)="onSubmit(formDetail);" [formGroup]="formDetail">
<label>
<span>Name</span>
<input
type="text"
placeholder="Enter emp name"
formControlName="name">
</label>
<app-userinfo></app-userinfo> <!-- Child component 1 -->
<app-useracc></app-useracc> <!-- Child component 2 -->
</form>
mainform.ts
export class MainformComponent implements OnInit {
formDetail: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.formDetail= this.formBuilder.group({
name:'',
userinfo: this.formBuilder.group({
userid: '',
userph: ''
}),
useracc: this.formBuilder.group({
useracc: '',
usertransfer: ''
})
});
}
onSubmit(value:User){
debugger;
}
}
Console.log
formControlName must be used with a parent formGroup directive. You'll want to add a formGroup
是否可以将嵌套表单组件作为单独的子组件?
您需要使用 Input()
并将子 FormGroup
传递给 child。我在这里稍微改变了一下,将组命名为 useraccount
而不是 useracc
以将控件与组分开:
您 parent 中用户帐户的子组:
...
useraccount: this.formBuilder.group({
useracc: '',
})
...
因此,parent 中的相关 child 组件标记应如下所示:
<app-useracc [useraccount]="formDetail.controls.useraccount"></app-useracc>
然后在您的 child 组件中添加输入:
@Input() useraccount: FormGroup;
模板可能如下所示:
<div [formGroup]="useraccount">
<input formControlName="useracc">
</div>
工作sample