angular - Angular:从 FormControl 获取所有验证器的列表
问题描述
我在这里可能错了,但经过一番研究,似乎不可能从 FormControl 中提取验证器列表
const ctrl = new FormControl(null,[Validators.minLength(8), Validators.required]});
我想要一个包含这些验证器的列表,所以我可以做这样的事情(理论上)
const validators = ctrl.getValidators();
ctrl.setValidators( [...validators, myOwnValidator]);
理想情况下,我想附加一个验证器,但据我所知,这是不可能的。
我在互联网上找到了两个访问 FormControl 验证器的建议:
1)
const validator = ctrl.validator('' as any as AbstractControl);
// -> {required: true}
- const validator = ctrl.validator({} as AbstractControl); // -> {必需:真}
这两个选项的作用完全相同,它们返回一个只有一个 keyrequired
和一个 value的对象true
。不是很有用,因为我看不到有关其他验证器的任何信息,并且我需要验证器类(因为我需要再次设置验证器)。
到目前为止我发现的东西不是很有用,所以我想知道我是否错过了一些东西。所以任何帮助将不胜感激!
解决方案
Angular 12.2.0的解决方案
this.form.controls["firstName"].addValidators([Validators.minLength(1), Validators.maxLength(30)]);
角度 11 及以下的解决方案
您可以将特定控件的验证器定义为变量,然后重用它
public ctrlDefaultValidators = [Validators.minLength(8), Validators.required];
public ctrl = new FormControl(null, ctrlDefaultValidators});
ctrl.setValidators( [...ctrlDefaultValidators , myOwnValidator]);
ps:别忘了打电话updateValueAndValidity
推荐阅读
- linux - 使用 Nginx 将请求转移到另一个 POD
- c++14 - count = count + n&1 和 count += n&1 之间的差异
- css - 如何在 Wordpress 上禁用移动设备上的元素?
- android - Kotlin - 广播接收器调用问题
- spring - 如何使用 Spring JDBC 模板更新从具有相似条件的表中删除记录?
- mysql - 无法将 MySQL 从 8.0.3 升级到 8.0.14
- c# - 在页面底部的现有 PDF 中添加表格
- c# - 使用 c# 列出安装在 Windows 10 机器上的游戏
- ios - Mac 10.14 中的 Intellij Idea 看不到 ios 模拟器
- linux - 如何在变量中添加“”字符作为自己?