Angular8 簡(jiǎn)單表單驗(yàn)證的實(shí)現(xiàn)示例
簡(jiǎn)單表單校驗(yàn)
傻瓜式校驗(yàn)
直接復(fù)制Antd中demo
<form nz-form [nzLayout]="'inline'" [formGroup]="validateForm" (ngSubmit)="submitForm()">
<nz-form-item>
<nz-form-control nzErrorTip="Please input your username!">
<nz-input-group nzPrefixIcon="user">
<input formControlName="userName" nz-input placeholder="Username" />
</nz-input-group>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control nzErrorTip="Please input your Password!">
<nz-input-group nzPrefixIcon="lock">
<input formControlName="password" nz-input type="password" placeholder="Password" />
</nz-input-group>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-control>
<button nz-button nzType="primary" [disabled]="!validateForm.valid">Log in</button>
</nz-form-control>
</nz-form-item>
</form>
validateForm!: FormGroup;
submitForm(): void {
for (const i in this.validateForm.controls) {
this.validateForm.controls[i].markAsDirty();
this.validateForm.controls[i].updateValueAndValidity();
}
}
constructor(private fb: FormBuilder) {}
ngOnInit(): void {
this.validateForm = this.fb.group({
userName: [null, [Validators.required]],
password: [null, [Validators.required]],
remember: [true]
});
}
此類表單校驗(yàn)較為單一,或者要求比較低,通常即為required校驗(yàn),錯(cuò)誤信息提示也多為固定不變。

智能化校驗(yàn)
表單一旦開(kāi)始有具體的細(xì)節(jié)校驗(yàn)或者復(fù)雜的業(yè)務(wù)參雜,校驗(yàn)提示必須準(zhǔn)確、清晰。
userName為例,除了為必填項(xiàng),必然需要符合某種格式,亦或是指定郵箱格式等,那么校驗(yàn)必須同時(shí)反映出錯(cuò)誤類型,本例假設(shè)用戶名有長(zhǎng)度要求進(jìn)行演示。
<nz-form-control [nzErrorTip]="getErrTipByField('userName')">
<nz-input-group nzPrefixIcon="user">
<input formControlName="userName" nz-input placeholder="Username" />
</nz-input-group>
</nz-form-control>
export class SimpleFormComponent implements OnInit {
validateForm: FormGroup;
errMessageMap = {};
constructor(
private fb: FormBuilder
) { }
ngOnInit() {
this.errMessageMap = {
userName: {
required: 'please input your name!',
minlength: 'please input at least least 5 character'
},
password: {
required: 'please input your password!'
}
};
this.validateForm = this.fb.group({
userName: [null, [Validators.required, Validators.minLength(5)]],
password: [null, [Validators.required]],
remember: [true]
}, { updateOn: 'change' });
}
submitForm(): void {
if (this.validateForm.controls) {
for (const i in this.validateForm.controls) {
if (this.validateForm.controls[i]) {
this.validateForm.controls[i].markAsDirty();
this.validateForm.controls[i].updateValueAndValidity();
}
}
}
}
getErrTipByField(fieldName) {
const errors = this.validateForm.get(fieldName).errors;
let errMsg = '';
for (const key in errors) {
if (errors.hasOwnProperty(key)) {
errMsg += this.errMessageMap[fieldName][key];
}
}
return errMsg;
}
}
構(gòu)建出一個(gè)數(shù)據(jù)對(duì)象,以滿足不同字段下不同錯(cuò)誤類型的錯(cuò)誤提示,根據(jù)業(yè)務(wù)需求,決定是否顯示全部錯(cuò)誤信息或者按照業(yè)務(wù)優(yōu)先級(jí)顯示。

其它細(xì)節(jié)
表單校驗(yàn)時(shí)機(jī)可以設(shè)置,默認(rèn)為change,可選blur 、submit
表單驗(yàn)證正確的,想要提示勾號(hào)可以添加屬性 nzHasFeedback

submit中那段代碼是重新對(duì)表單進(jìn)行驗(yàn)證了,一般驗(yàn)證中是不需要的,動(dòng)態(tài)表單驗(yàn)證后續(xù)結(jié)合自定義表單服務(wù)進(jìn)行演示。
到此這篇關(guān)于Angular8 簡(jiǎn)單表單驗(yàn)證的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Angular8 表單驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Angular8基礎(chǔ)應(yīng)用之表單及其驗(yàn)證
- AngularJS實(shí)現(xiàn)表單驗(yàn)證
- AngularJS實(shí)現(xiàn)表單手動(dòng)驗(yàn)證和表單自動(dòng)驗(yàn)證
- 詳解AngularJS實(shí)現(xiàn)表單驗(yàn)證
- Angular2表單自定義驗(yàn)證器的實(shí)現(xiàn)
- angular實(shí)現(xiàn)表單驗(yàn)證及提交功能
- 詳解AngularJS中的表單驗(yàn)證(推薦)
- AngularJS手動(dòng)表單驗(yàn)證
- Angular表單驗(yàn)證實(shí)例詳解
- AngularJs表單驗(yàn)證實(shí)例詳解
相關(guān)文章
AngularJS基礎(chǔ) ng-src 指令簡(jiǎn)單示例
本文主要介紹AngularJS ng-src 指令,這里對(duì)ng-src 指令的資料做了詳細(xì)整理,有需要的小伙伴可以參考下2016-08-08
angularJS實(shí)現(xiàn)表格部分列展開(kāi)縮起示例代碼
這篇文章主要介紹了angularJS實(shí)現(xiàn)表格部分列展開(kāi)縮起示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
Angular.JS去掉訪問(wèn)路徑URL中的#號(hào)詳解
最近天天都在用AngularJS,各類文檔也都看過(guò)好幾遍,但總是些編程上的事找不到優(yōu)雅的解決辦法。今天終于把AngularJS的項(xiàng)目訪問(wèn)路徑URL里的#號(hào)去掉了,這個(gè)問(wèn)題不見(jiàn)得有多難,關(guān)鍵是花多長(zhǎng)時(shí)間去理解AngularJS框架本身,下面來(lái)看看詳細(xì)介紹,需要的朋友可以參考下。2017-03-03
AngularJS ionic手勢(shì)事件的使用總結(jié)
本篇文章主要介紹了AngularJS手勢(shì)事件的使用總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Angularjs的ng-repeat中去除重復(fù)數(shù)據(jù)的方法
這篇文章主要介紹了Angularjs的ng-repeat中去除重復(fù)數(shù)據(jù)的方法,涉及AngularJS針對(duì)重復(fù)數(shù)據(jù)的遍歷與過(guò)濾技巧,需要的朋友可以參考下2016-08-08

