起初,这对我帮助很大,但后来我发现,我们正在过度复杂化事情。我们不必构建自己的formControl,只需将formGroup传递给子组件即可。
在父组件中,不需要使用
this.form = fb.group({
name:['Angular2 (Release Candidate!)'],
username: [{firstName: 'First', lastName: 'Last'}],
email:['My Email']
});
我们将用户名(username)初始化为一个FormGroup而不是一个FormControl:
this.form = fb.group({
name:['Angular2 (Release Candidate!)'],
username: fb.group({
firstName: ['First'],
lastName: ['Last']
}),
email:['My Email']
});
在子组件中,我们需要一个FormGroup的输入属性。
@Input()
usernameGroup: FormGroup;
在子模板中:
<div [formGroup]="usernameGroup">
<input formControlName="firstName">
<input formControlName="lastName">
</div>
然后在父模板中:
<my-child [usernameGroup]="form.controls.username"></my-child>
了解更多信息,请查看本文:https://scotch.io/tutorials/how-to-build-nested-model-driven-forms-in-angular-2
在这里构建自己的formControl实际上是一种过度设计,想要了解更多信息,请查看这里:http://blog.thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html