最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Angular自定義字段校驗(yàn)指令的方法示例

 更新時(shí)間:2019年02月01日 10:24:29   作者:我想和這個(gè)世界談  
這篇文章主要介紹了使用Angular自定義字段校驗(yàn)指令的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Angular中,提供的表單驗(yàn)證不能用于所有應(yīng)用場(chǎng)景,就需要?jiǎng)?chuàng)建自定義驗(yàn)證器,比如對(duì)IP、MAC的合法性校驗(yàn)
這里是根據(jù)官網(wǎng)實(shí)例自定義MAC地址的正則校驗(yàn),環(huán)境為Angular: 7.2.0 , NG-ZORRO:v7.0.0-rc3

添加指令

/shared/validator.directive.ts

注冊(cè)到 NG_VALIDATORS 提供商中

providers: [
    {provide: NG_VALIDATORS, useExisting: ValidatorDirective, multi: true}
  ]

Angular 在驗(yàn)證流程中的識(shí)別出指令的作用,是因?yàn)橹噶畎炎约鹤?cè)到了 NG_VALIDATORS 提供商中,該提供商擁有一組可擴(kuò)展的驗(yàn)證器。

實(shí)現(xiàn) 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寫(xiě)好后,只要把 appValidator 選擇器添加到輸入框上就可以激活這個(gè)驗(yàn)證器。

在模板中使用

首先在模板所在的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">
        請(qǐng)輸入正確的Mac地址!
      </nz-form-explain>
    </nz-form-control>
  </nz-form-item>

在mac地址校驗(yàn)不通過(guò)時(shí),錯(cuò)誤信息便會(huì)顯示。如果想在失去焦點(diǎn)時(shí)顯示錯(cuò)誤信息可以使用validateForm.get('mac').touched,如下:

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

到此,自定義字段驗(yàn)證指令就完成了,更多請(qǐng)查看Angular官網(wǎng)表單驗(yàn)證自定義驗(yàn)證器部分。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • angularjs使用directive實(shí)現(xiàn)分頁(yè)組件的示例

    angularjs使用directive實(shí)現(xiàn)分頁(yè)組件的示例

    本篇文章主要介紹了angularjs使用directive實(shí)現(xiàn)分頁(yè)組件的示例,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-02-02
  • Angular?結(jié)合?dygraphs?實(shí)現(xiàn)?annotation功能

    Angular?結(jié)合?dygraphs?實(shí)現(xiàn)?annotation功能

    這篇文章主要介紹了Angular?結(jié)合?dygraphs?實(shí)現(xiàn)?annotation,本文,我們直接結(jié)合 Angular 來(lái)演示,如何通過(guò) dygraphs 實(shí)現(xiàn)折線圖上的 annotation 的功能,需要的朋友可以參考下
    2022-08-08
  • AngularJS表格詳解及示例代碼

    AngularJS表格詳解及示例代碼

    本文主要講解AngularJS表格的知識(shí)內(nèi)容,這里整理了基礎(chǔ)資料,并附代碼和示例效果圖,有興趣的小伙伴可以參考下
    2016-08-08
  • angularjs點(diǎn)擊圖片放大實(shí)現(xiàn)上傳圖片預(yù)覽

    angularjs點(diǎn)擊圖片放大實(shí)現(xiàn)上傳圖片預(yù)覽

    這篇文章主要為大家詳細(xì)介紹了angularjs點(diǎn)擊圖片放大實(shí)現(xiàn)上傳圖片預(yù)覽的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • AngularJS 自定義指令詳解及示例代碼

    AngularJS 自定義指令詳解及示例代碼

    本文主要介紹AngularJS 自定義指令,這里整理了基礎(chǔ)資料及詳細(xì)的示例代碼及實(shí)現(xiàn)效果圖,有需要的小伙伴可以參考下
    2016-08-08
  • 最新評(píng)論

    哈巴河县| 乐业县| 平谷区| 衡阳县| 石首市| 紫阳县| 工布江达县| 桓台县| 长宁区| 敖汉旗| 昌都县| 大新县| 阜新市| 瓮安县| 五河县| 新河县| 湘西| 旅游| 马尔康县| 周至县| 巧家县| 泸溪县| 车致| 桂东县| 芷江| 綦江县| 陵水| 揭阳市| 吴旗县| 杨浦区| 万宁市| 两当县| 安徽省| 津市市| 修武县| 澄迈县| 广南县| 昆明市| 洛扎县| 宜兰县| 鹤岗市|