Angular: 从 FormControl 获取所有验证器的列表
Angular: get list of all validators from a FormControl
我在这里可能是错的,但经过一些研究似乎无法从 FormControl 中提取验证器列表
const ctrl = new FormControl(null,[Validators.minLength(8), Validators.required]});
我想要一个包含这些验证器的列表,这样我就可以做这样的事情(理论上)
const validators = ctrl.getValidators();
ctrl.setValidators( [...validators, myOwnValidator]);
理想情况下,我想附加一个验证器,但据我所知这是不可能的。
我在 Internet 上找到了两个访问 FormControl 上的验证器的建议:
1)
const validator = ctrl.validator('' as any as AbstractControl);
// -> {required: true}
- const 验证器 = ctrl.validator({} 作为 AbstractControl);
// -> {必需:true}
这两个选项做的事情完全一样,它们 return 一个只有一个键 required
和一个值 true
的对象。不是很有用,因为我没有看到任何关于其他验证器的信息,我需要验证器 类(因为我需要再次设置验证器)。
到目前为止我发现的东西不是很有用,所以我想知道我是否遗漏了什么。因此,我们将不胜感激!
Angular12.2.0
的解决方案
this.form.controls["firstName"].addValidators([Validators.minLength(1), Validators.maxLength(30)]);
angular 11 岁及以下
的解决方案
您可以将特定控件的验证器定义到变量中,然后重用它
public ctrlDefaultValidators = [Validators.minLength(8), Validators.required];
public ctrl = new FormControl(null, ctrlDefaultValidators});
ctrl.setValidators( [...ctrlDefaultValidators , myOwnValidator]);
ps: 别忘了打电话给 updateValueAndValidity
我在这里可能是错的,但经过一些研究似乎无法从 FormControl 中提取验证器列表
const ctrl = new FormControl(null,[Validators.minLength(8), Validators.required]});
我想要一个包含这些验证器的列表,这样我就可以做这样的事情(理论上)
const validators = ctrl.getValidators();
ctrl.setValidators( [...validators, myOwnValidator]);
理想情况下,我想附加一个验证器,但据我所知这是不可能的。
我在 Internet 上找到了两个访问 FormControl 上的验证器的建议:
1)
const validator = ctrl.validator('' as any as AbstractControl);
// -> {required: true}
- const 验证器 = ctrl.validator({} 作为 AbstractControl); // -> {必需:true}
这两个选项做的事情完全一样,它们 return 一个只有一个键 required
和一个值 true
的对象。不是很有用,因为我没有看到任何关于其他验证器的信息,我需要验证器 类(因为我需要再次设置验证器)。
到目前为止我发现的东西不是很有用,所以我想知道我是否遗漏了什么。因此,我们将不胜感激!
Angular12.2.0
的解决方案this.form.controls["firstName"].addValidators([Validators.minLength(1), Validators.maxLength(30)]);
angular 11 岁及以下
的解决方案您可以将特定控件的验证器定义到变量中,然后重用它
public ctrlDefaultValidators = [Validators.minLength(8), Validators.required];
public ctrl = new FormControl(null, ctrlDefaultValidators});
ctrl.setValidators( [...ctrlDefaultValidators , myOwnValidator]);
ps: 别忘了打电话给 updateValueAndValidity