是否可以在一个表单字段上有多个验证器?我try 了这个,但它导致了一些奇怪的错误(字段永远无效,即使满足了要求)

this.username = new Control('', Validators.minLength(5), Validators.required);

如何使用多个验证器?

推荐答案

您可以使用Validators.compose()组合验证器

this.username = new Control('', 
    Validators.compose(
        [Validators.minLength(5), Validators.required]));

异步验证程序使用

this.username = new Control('', null,
    Validators.composeAsync(
        [someAsyncValidator, otherAsyncValidator]));

异步验证器存在开放性问题,尤其是与异步验证器结合使用的同步验证器无法工作

要使同步验证器与异步验证器协同工作,请将同步验证器包装在promise 中,并将其组合为异步Valdiator,如

this.username = new Control('', null,
    Validators.composeAsync([
        (control:Control) => Promise.resolve(Validators.minLength(5)(control)), 
        (control:Control) => Promise.resolve(Validators.required(control)),
        someAsyncValidator, otherAsyncValidator
    ]));

Typescript相关问答推荐

如果存在一处房产,请确保存在其他房产

如何从具有给定键列表的对象类型的联合中构造类型

为什么typescript不能推断类的方法返回类型为泛型''

如何访问Content UI的DatePicker/中的sx props of year picker?'<>

泛型类型,引用其具有不同类型的属性之一

如何使我的函数专门针对联合标记?

通过泛型函数本身推断受约束的泛型参数的类型脚本问题

以Angular 执行其他组件的函数

类型';字符串|数字';不可分配给类型';未定义';.类型';字符串';不可分配给类型';未定义';

如何键入派生类的实例方法,以便它调用另一个实例方法?

如何将通用接口的键正确设置为接口的键

可赋值给类型的类型,从不赋值

设置不允许相同类型的多个参数的线性规则

顶点堆叠的图表条形图未在正确的x轴上显示

如何在TypeScrip中使用数组作为字符串的封闭列表?

如何在Vue动态类的上下文中解释错误TS2345?

为什么TS条件返回要求不明确的强制转换而不是精确的强制转换?

递归JSON类型脚本不接受 node 值中的变量

剧作家测试未加载本地网址

我是否应该在 Next.js 中的服务器组件中获取秘密数据的所有函数中使用使用服务器?