国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

使用Angular自定義字段校驗指令的方法示例

2024-05-06 15:42:39
字體:
來源:轉載
供稿:網友

Angular中,提供的表單驗證不能用于所有應用場景,就需要創建自定義驗證器,比如對IP、MAC的合法性校驗
這里是根據官網實例自定義MAC地址的正則校驗,環境為Angular: 7.2.0 , NG-ZORRO:v7.0.0-rc3

添加指令

/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中使用

<nz-form-item>    <nz-form-control>      <nz-input-group>        <input formControlName="mac" nz-input type="text" placeholder="mac" appValidator="mac">      </nz-input-group>      <nz-form-explain *ngIf="validateForm.get('mac').dirty && validateForm.get('mac').errors">        請輸入正確的Mac地址!      </nz-form-explain>    </nz-form-control>  </nz-form-item>

在mac地址校驗不通過時,錯誤信息便會顯示。如果想在失去焦點時顯示錯誤信息可以使用validateForm.get('mac').touched,如下:

<nz-form-explain *ngIf="validateForm.get('mac').dirty && validateForm.get('mac').errors&&validateForm.get('mac').touched">        請輸入正確的Mac地址!      </nz-form-explain>

到此,自定義字段驗證指令就完成了,更多請查看Angular官網表單驗證自定義驗證器部分。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 广汉市| 浪卡子县| 唐海县| 杨浦区| 延吉市| 阜平县| 柳林县| 临汾市| 克山县| 越西县| 周宁县| 瓦房店市| 仲巴县| 曲周县| 津南区| 铁岭县| 得荣县| 临汾市| 忻城县| 灵台县| 明溪县| 安图县| 湘西| 河间市| 丰镇市| 镇巴县| 鄢陵县| 宣化县| 谢通门县| 策勒县| 台北县| 木里| 自治县| 丹巴县| 湘潭市| 平利县| 丁青县| 房产| 图们市| 来凤县| 新巴尔虎左旗|