angular - 将验证器添加到 formGroup 而不删除以前添加的验证器
问题描述
有什么方法可以添加验证器并将其添加到表单组而不删除之前可能已添加的任何验证器。
假设我有一个很大的 FormGroup,并且在某个时候我需要添加一个自定义验证器。setValidators
删除可能已添加到其中的任何验证器。formGroup.serValidators([customValidation, fromGroup.validator])
进行group
自定义验证null
。有任何想法吗?
这是我到目前为止所得到的:
const customValidation(thing, otherThing): ValidatorFn {
// The group is null if I do formGroup.serValidators([customValidation, fromGroup.validator])
return (group: FormGroup): ValidatorErros | null => {
... validate stuff
}
methodThatAddCustomValidator(formGroup) {
formGroup.serValidators([customValidation, fromGroup.validator]);
formGroup.updateValueAndValidity();
}
编辑:我得到了一些很好的问题和建议。只是想让它与我的架构一起工作。我想知道有什么办法可以:
formGroup.validator ?
formGroup.validator.push(customValidation) :
formGroup.setValidators(customValidation);
formGroup.updateValueAndValidity();
^ 这就是答案
解决方案
我建议将您的验证器数组存储在一个单独的变量中,在运行时随意填充它,然后执行 setValidators 传递该变量。使用 updateValueAndValidity 以及要考虑的新验证器集。
formGroup: FormGroup;
validators: ValidatorFn[] = [Validators.required];
constructor(fb: FormBuilder) {
this.formGroup = fb.group({
field: ['', validators];
});
}
ngOnInit() {
this.addValidator(Validators.minLength(2));
this.updateFieldValidation(this.formGroup.controls.field);
}
addValidator(validator: ValidatorFn) {
this.validators.push(validator);
}
updateFieldValidation(control: AbstractControl) {
control.setValidators(this.validators);
control.updateValueAndValidity();
}
推荐阅读
- charts - 如何在 Google 条形图中分配条形颜色
- angular - 如何在Angular Kendo UI Treelist中从父行展开所有子行
- maven - Mac OS 上 Maven 中的 Java 版本管理
- javascript - 如果选择了超过 5 个单选框,则显示 javascript 消息
- button - MSO 按钮背景颜色
- javascript - 我如何能够将数组存储在我的 Discord Bot 的文本文件中?
- header - 由于固定的标题,CSS 正文边框不会一直到页面顶部
- node.js - 当文件已经从客户端上传为 multipart/form-data 时,如何从 node.js 将文件作为 multipart/form-data 发送?
- angular - “禁用”被定义为“CanColor & CanDisableRipple & HasTabIndex & MatChipBase”类中的一个属性,但在“MatChip”中作为一个访问权限被覆盖
- google-cloud-ml - 使用 AutoML Vision 进行 Web 检测