怎么在Angular中自定义字段校验指令
                                            这篇文章给大家介绍怎么在Angular中自定义字段校验指令,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联是一家业务范围包括IDC托管业务,雅安服务器托管、主机租用、主机托管,四川、重庆、广东电信服务器租用,中国电信成都枢纽中心,成都网通服务器托管,成都服务器租用,业务范围遍及中国大陆、港澳台以及欧美等多个国家及地区的互联网数据服务公司。
添加指令
/shared/validator.directive.ts
注册到 NG_VALIDATORS 提供商中
providers: [
    {provide: NG_VALIDATORS, useExisting: ValidatorDirective, multi: true}
  ]Angular 在验证流程中的识别出指令的作用,是因为指令把自己注册到了 NG_VALIDATORS 提供商中,该提供商拥有一组可扩展的验证器。
实现 Validator 接口
import {Directive, Input} from '@angular/core';
import {Validator, AbstractControl, NG_VALIDATORS} from '@angular/forms';
@Directive({
  selector: '[appValidator]',
    providers: [
      {provide: NG_VALIDATORS, useExisting: ValidatorDirective, multi: true}
    ]
})
export class ValidatorDirective implements Validator {
  @Input('appValidator') value: string;
  validate(control: AbstractControl): { [key: string]: any } | null {
    const validateMac = /^(([A-Fa-f0-9]{2}[:]){5}[A-Fa-f0-9]{2}[,]?)+$/;
    switch (this.value) {
      case 'mac':
        return validateMac.exec(control['value']) ? null : {validate: true};
        break;
    }
  }
}ValidatorDirective写好后,只要把 appValidator 选择器添加到输入框上就可以激活这个验证器。
在模板中使用
首先在模板所在的module中引入该指令
import {ValidatorDirective} from "../../shared/validator.directive";
@NgModule({
  imports: [
    SharedModule
  ],
  declarations: [
    ValidatorDirective
  ],
  providers: [
    AuthGuard
  ],
})在html中使用
请输入正确的Mac地址! 
在mac地址校验不通过时,错误信息便会显示。如果想在失去焦点时显示错误信息可以使用validateForm.get('mac').touched,如下:
请输入正确的Mac地址! 
关于怎么在Angular中自定义字段校验指令就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
分享名称:怎么在Angular中自定义字段校验指令
分享URL:http://www.scyingshan.cn/article/jiiicg.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 