【发布时间】:2017-04-04 20:39:31
【问题描述】:
我正在使用FormBuilder 创建一个表单,我想将Validator 添加到formGroup。
这是我的代码:
this.myForm = fb.group({
'name': ['', [Validators.maxLength(50), Validators.required]],
'surname': ['', [Validators.maxLength(50), Validators.required]],
'address': fb.group({
'street': ['', Validators.maxLength(300)],
'place': [''],
'postalcode': ['']
}),
'phone': ['', [Validators.maxLength(25), phoneValidator]],
'email': ['', emailValidator]
});
我想在某些条件下有条件地将验证器添加到某些地址的 formControls。
所以我通过以下方式添加了validator:
'address': fb.group({
'street': ['', Validators.maxLength(300)],
'place': [''],
'postalcode': ['']
}), { validator: fullAddressValidator })
然后我开始为地址FormGroup创建验证器:
export const fullAddressValidator = (control:FormGroup) => {
var street:FormControl = control.controls.street;
var place:FormControl = control.controls.place;
var postalcode:FormControl = control.controls.postalcode;
if (my conditions are ok) {
return null;
} else {
return { valid: false };
}
};
我需要添加以下条件:
- 如果所有字段为空,则表单有效
- 如果填写了其中一个字段,则必须填写所有字段
- 如果
place是国家/地区(而不是城市)的实例,则postalcode是可选的 - 如果填写了
postalcode,那么zipValidator必须是
添加到它的 formControl
那么,是否可以在特定条件下将 Angular2 Validators 添加到 FormGroup?
如果是,如何执行我的条件?我可以在另一个验证器的源代码中使用setValidators() 和updateValueAndValidity() 吗?
【问题讨论】:
标签: validation angular angular2-forms custom-validators angular2-formbuilder