我知道将自定义控件创建为组件,但我不知道如何创建自定义组。
同样我们可以通过实现ControlValueAccessor
和使用自定义组件<my-cmp formControlName="foo"></my-cmp>
来做到这一点,我们如何才能为组实现这种效果?
<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">