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}
  1. 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