小編給大家分享一下Angular8如何實現(xiàn)表單及其驗證,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,先為張家口等服務(wù)建站,張家口等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為張家口企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
正文
(一)、新建表單(模板表單)
1、新建名稱為formValidator的ng項目——命令行輸入ng new formValidator;
2、修改pakage.json文件——添加參數(shù),方便開發(fā),命令行輸入npm start啟動項目;
"scripts": { "ng": "ng", "start": "ng serve --open --port 4210",//修改端口號&自動打開默認(rèn)瀏覽器窗口 "build": "ng build", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" },
3、新建組件,命令行輸入ng g c templateForm --spec false;
4、將app.components.html中的內(nèi)容,替換成
5、在app.module.ts中引入FormModul并在import中使用;
6、書寫formValidator組件
//template-form.html
//template-form.ts ... name: string; nameAry:string[] = ['zhangsan','lisi','wangwu']; constructor() { } ngOnInit() {} save(): void{ console.log('save 發(fā)請求') } ...
(二)、驗證表單
1、新建指令,用于驗證ng g c d share/verifyName
2、在share目錄下新建nameValidator.ts,用于書寫驗證函數(shù)
//share/nameValidator.ts import { ValidatorFn, AbstractControl } from "@angular/forms"; export function nameValidator(nameList: string[]): ValidatorFn { return (control: AbstractControl): { [key: string]: any } | null => { //依據(jù)指令中傳遞進(jìn)來的名稱列表進(jìn)行判斷,如果包含,就返回一個對象,對象的key將 //作為模板(template-form.html)中被驗證的控件的erros的key,如果不包含返回null //表示驗證通過 return nameList.includes(control.value) ? { 'repeat': { value: control.value } } : null; }; }
3、書寫指令——驗證名稱不能重復(fù)
//verify-name.directive.ts import { Directive, Input } from '@angular/core'; import { Validator, NG_VALIDATORS, AbstractControl } from '@angular/forms'; import { nameValidator } from './nameValidator'; @Directive({ selector: '[appVerifyName]', providers: [{ provide: NG_VALIDATORS, useExisting: VerifyNameDirective, multi: true }] }) export class VerifyNameDirective implements Validator { //實現(xiàn)Validator接口 @Input('appVerifyName') //接收驗證規(guī)則(reg),或者你希望傳到指令中的什么 nameList: string[]; validate(control: AbstractControl): { [key: string]: any } | null { return this.name ? nameValidator(nameList)(control) : null } }
以上是“Angular8如何實現(xiàn)表單及其驗證”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!