Angular8 簡單表單驗證的實現(xiàn)示例
簡單表單校驗
傻瓜式校驗
直接復制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]
});
}
此類表單校驗較為單一,或者要求比較低,通常即為required校驗,錯誤信息提示也多為固定不變。

智能化校驗
表單一旦開始有具體的細節(jié)校驗或者復雜的業(yè)務參雜,校驗提示必須準確、清晰。
userName為例,除了為必填項,必然需要符合某種格式,亦或是指定郵箱格式等,那么校驗必須同時反映出錯誤類型,本例假設用戶名有長度要求進行演示。
<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;
}
}
構建出一個數(shù)據(jù)對象,以滿足不同字段下不同錯誤類型的錯誤提示,根據(jù)業(yè)務需求,決定是否顯示全部錯誤信息或者按照業(yè)務優(yōu)先級顯示。

其它細節(jié)
表單校驗時機可以設置,默認為change,可選blur 、submit
表單驗證正確的,想要提示勾號可以添加屬性 nzHasFeedback

submit中那段代碼是重新對表單進行驗證了,一般驗證中是不需要的,動態(tài)表單驗證后續(xù)結合自定義表單服務進行演示。
到此這篇關于Angular8 簡單表單驗證的實現(xiàn)示例的文章就介紹到這了,更多相關Angular8 表單驗證內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Angular4實現(xiàn)圖片上傳預覽路徑不安全的問題解決
這篇文章主要給大家介紹了關于Angular4實現(xiàn)圖片上傳預覽路徑不安全問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。2017-12-12
angular6?Error:Debug?Failure?at?typeToString解決分析
這篇文章主要為大家介紹了angular6?Error:Debug?Failure?at?typeToString解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11

