angular - 在 FormArray 上使用内置的 Angular 验证器
问题描述
使用 FormBuilder,我为一组电子邮件字段实例化了一个 FormArray。我为它分配了一组Validator
s,其中包括一个 customValidator
和 Angular 的内置Validators.email
.
this.formBuilder.array(
[this.formBuilder.control('')],
Validators.compose([customValidator, Validators.email])
)
以这种方式分配Validator
s 意味着将 sFormArray
作为control
参数传递给 Validators。我的自定义验证器可以调整为期望 a FormArray
,但Validators.email
期望 aFormControl
具有单个值。
如何将 Angular 内置验证器与FormArray
?
解决方案
formbuild 数组方法指定validatorOrOpts or asyncValidator
在表单数组本身上运行的参数而不是数组的控件,因此有两种解决方案
将验证器添加到它自己的控件中
this.formBuilder.array( [this.formBuilder.control('',Validators.email)], Validators.compose([customValidator]) )
- 在每个数组控件上创建自定义验证器并触发角度验证器
function customArrayEmailValidator(formArray: FormArray) {
if (formArray.length > 0) {
for (let c of formArray.controls) {
let state = Validators.email(c)
if (state !== null) {
return { emailInValid: state }
}
}
return null;
} else {
return null;
}
}
但它看起来仍然像第一种方式一样
推荐阅读
- mongodb - 在 Mongoose Schema 上推送子子文档
- python - 在 ndarray 中获取跨通道元素总和的优化方法
- sql - SQL 在使用 OR 语句进行搜索时获得更好的结果
- javascript - 如何从 UTC DateTime 中获取时间值?
- python-3.x - Gitlab CI 无法从 Pipfile.lock 安装正则表达式
- php - 如何通过键入文件名称的一部分来搜索文件?
- python - 如何在熊猫数据框中执行分组、排序和连接字符串
- kubernetes - 使用服务帐户令牌的 Kubernetes 仪表板错误
- android-studio - 如何从 Flutter 中的应用名称中删除下划线
- perl - perl 中的“一次”警告是什么?