【发布时间】:2018-01-23 14:31:29
【问题描述】:
我知道将自定义控件创建为组件,但我不知道如何创建自定义组。
同样我们可以通过implementing ControlValueAccessor 和使用像<my-cmp formControlName="foo"></my-cmp> 这样的自定义组件来做到这一点,我们如何为a group 实现这个效果?
<my-cmp formGroupName="aGroup"></my-cmp>
两个非常常见的用例是 (a) 将长表单分成多个步骤,每个步骤在一个单独的组件中,以及 (b) 封装出现在多个表单中的一组字段,例如地址(国家/地区组,州、城市、地址、建筑物编号)或出生日期(年、月、日)。
示例用法(不是实际工作代码)
Parent 使用FormBuilder 构建了以下表单:
// parent model
form = this.fb.group({
username: '',
fullName: '',
password: '',
address: this.fb.group({
country: '',
state: '',
city: '',
street: '',
building: '',
})
})
父模板(为简洁起见,不可访问且无语义):
<!-- parent template -->
<form [groupName]="form">
<input formControlName="username">
<input formControlName="fullName">
<input formControlName="password">
<address-form-group formGroup="address"></address-form-group>
</form>
现在这个AddressFormGroupComponent 知道如何处理其中包含这些特定控件的组。
<!-- child template -->
<input formControlName="country">
<input formControlName="state">
<input formControlName="city">
<input formControlName="street">
<input formControlName="building">
【问题讨论】:
标签: angular angular-forms