我正在创建一个表单,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到 a中吗?FormGroup如果是,如何执行我的条件?我可以在另一个验证器的源代码中使用setValidators()和吗?updateValueAndValidity()