這篇文章給大家介紹怎么在Angular中自定義字段校驗指令,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)是一家業(yè)務范圍包括IDC托管業(yè)務,雅安服務器托管、主機租用、主機托管,四川、重慶、廣東電信服務器租用,中國電信成都樞紐中心,成都網(wǎng)通服務器托管,成都服務器租用,業(yè)務范圍遍及中國大陸、港澳臺以及歐美等多個國家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務公司。
添加指令
/shared/validator.directive.ts
注冊到 NG_VALIDATORS 提供商中
providers: [ {provide: NG_VALIDATORS, useExisting: ValidatorDirective, multi: true} ]
Angular 在驗證流程中的識別出指令的作用,是因為指令把自己注冊到了 NG_VALIDATORS 提供商中,該提供商擁有一組可擴展的驗證器。
實現(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寫好后,只要把 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中自定義字段校驗指令就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文名稱:怎么在Angular中自定義字段校驗指令
分享地址:http://chinadenli.net/article26/jiiicg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、自適應網(wǎng)站、網(wǎng)站制作、App設計、品牌網(wǎng)站建設、網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)