我正在开发一个用户表单。
我正在总结我的问题,如果用户勾选了医疗政策复选框,那么用户必须填写医疗政策细节。
用户表单组代码如下:
let userForm = this.myFormBuilder.group({
userName: ['',Validators.required],
password: ['',Validators.required],
isMedicalPolicy: [false],
medicalPolicyInfo: this.myFormBuilder.group({
policyNumber: ['',Validator.maxLength(10)], // how to apply conditional required validation here,
if is isMedicalPolicy value is true.
});
});
请帮我一下。
发布于 2018-10-14 16:58:57
您可以监视单个窗体控件值的更改,然后根据该值更改其他控件的验证。
示例:
const isMedicalPolicyControl = this.userForm.get('isMedicalPolicy');
const policyNumberControl = this.userForm.get('medicalPolicyInfo.policyNumber');
this.subscription = isMedicalPolicyControl.valueChanges.subscribe(value => {
if (value) {
policyNumberControl.setValidators([
Validators.required,
Validator.maxLength(10)
]);
}
else {
policyNumberControl.setValue('');
policyNumberControl.setValidators(null);
}
policyNumberControl.updateValueAndValidity();
});
当组件被破坏时,您将希望从可观察到的valueChanges中取消订阅。
发布于 2020-06-22 17:38:49
您还可以简单地使用三元操作符,如:
medicalPolicyInfo: this.myFormBuilder.group({
policyNumber: ['', isMedicalPolicy ? [ Validator.maxLength(10), Validators.required]:[]]
});
https://stackoverflow.com/questions/52804917
复制相似问题