Angular使用指令来添加校验器

之前查阅资料的时候,对于NG中的校验器,一般用法都是在本组件下继承验证器Validator接口,再添加到NG表单中实现校验。

但是对于模板驱动型表单,一般的解决方法是使用将校验器添加到指令,或者说,创建一个自定义指令,在自定义指令中实现校验器。

@Directive({
  selector: '[customValidator]',
  providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]
})
class CustomValidatorDirective implements Validator {
  validate(control: AbstractControl): ValidationErrors|null {
    return {'custom': true};
  }
}

再抽象一点,如果你的自定义指令很多,建议将自定义指令和校验函数分离开写。

@Directive({
  selector: '[customValidator]',
  providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]
})
class CustomValidatorDirective implements Validator {
    return bar();
  }
}

//注:另外新建一个.ts文件,写一个bar()函数 

//.ts文件中
export function bar(): ValidatorFn{
    if(true){
            return null
        }else{
        { 验证器名字: { value: 表单值, msg: '你的提示信息' } }
        } 

                          
}

这样当使用模板驱动时候就直接再<>标签内加入自定义指令。

总结:

模板驱动 ->  自定义指令中添加校验函数

表单驱动 -> Frombuilder中添加校验函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董厂长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值