angular封装的表单验证

简介: angular封装的表单验证

表单验证

创建vaildate文件

import { AbstractControl, FormControl, } from'@angular/forms';
exportclassvalidatorcheck {
/**     * 验证账号     *     帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线组合    */publicusernameVal(username: FormControl) {
letvalue=username.value;
if (!value) {
return { msg: '请输入账号' };
        } else {
constres=value.match(/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/)
returnres? {} : { msg: '账号格式不正确' };
        }
    }
/**     * 验证密码     *     密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线     */publicpasswordVal(password: FormControl): object {
letvalue=password.value;
if (!value) {
return { msg: '请输入密码' };
        } else {
constvalid=value.match(/^[a-zA-Z]\w{5,17}$/);
returnvalid? {} : { msg: '密码格式不正确' };
        }
    }
/**     * 验证手机号    */publicphoneVal(phone: FormControl): object {
constvalue=phone.value||'';
if (!value) {
return { msg: '请输入手机号' };
        } else {
constvalid=/^1((3[\d])|(4[5,6,9])|(5[0-3,5-9])|(6[5-7])|(7[0-8])|(8[1-3,5-8])|(9[1,8,9]))\d{8}$/.test(value);
returnvalid? {} : { msg: '手机号必须是11位数字' };
        }
    }
/**     * email地址    */publicemailVal(phone: FormControl): object {
constvalue=phone.value||'';
if (!value) {
return { msg: '请输入email地址' };
        } else {
constvalid=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
returnvalid? {} : { msg: 'email格式错误' };
        }
    }
/**     * 验证数字     *      是否是纯数字    */publicnumberlVal(phone: FormControl): object {
constvalue=phone.value||'';
if (value===undefined||null) {
return { msg: null };
        } else {
constvalid=/^[0-9]$/.test(value);
returnvalid? {} : { msg: '不是number类型' };
        }
    }
/**     * 判定输入的内容为全角。    */publicFullAnglelVal(phone: FormControl): object {
constvalue=phone.value||'';
if (value===undefined||null) {
return { msg: null };
        } else {
constvalid=/[\uff00-\uffff]/g.test(value);
returnvalid? {} : { msg: '输入的内容不是全角' };
        }
    }
/**     * 判定输入的内容为半角。    */publicsemiangleVal(phone: FormControl): object {
constvalue=phone.value||'';
if (!value) {
return { msg: null };
        } else {
constvalid=/[\u0000-\u00ff]/g.test(value);
returnvalid? {} : { msg: '输入的内容不是半角' };
        }
    }
}

使用

app.module.ts里进行挂载

import { BrowserModule } from'@angular/platform-browser';
import { NgModule } from'@angular/core';
import { FormsModule,ReactiveFormsModule } from'@angular/forms';
import { AppComponent } from'./app.component';
import { Login0000Component } from'../views/login0000.component';
import { AppRoutingModule } from"./app-routing.module"import { BrowserAnimationsModule } from'@angular/platform-browser/animations';
import { PdfViewerModule } from'ng2-pdf-viewer';
import { HttpClientModule } from'@angular/common/http';
import { CommonPartsModule } from'../shared/common-parts/common-parts.module';
import {validatorcheck} from'../shared/common-parts/validate/index'@NgModule({
declarations: [
AppComponent,
Login0000Component,
  ],
imports: [
BrowserModule, 
FormsModule,
AppRoutingModule,
BrowserAnimationsModule,
PdfViewerModule,
HttpClientModule,
CommonPartsModule,
ReactiveFormsModule,
  ],
providers: [
validatorcheck  ],
bootstrap: [AppComponent]
})
exportclassAppModule {
 }
在组件里使用

page.component.ts

import { Component, OnInit } from'@angular/core';
import { FormControl, FormGroup, FormBuilder, Validators } from'@angular/forms';
//引入checkimport { validatorcheck } from'../shared/common-parts/validate/index'@Component({
selector: 'app-demo',
templateUrl: './login0000.component.html',
styleUrls: []
})
exportclassLogin0000ComponentimplementsOnInit {
publicflag=false// 构造constructor(privatefb: FormBuilder, publicv: validatorcheck) {
  }
submit() {
this.flag=true  }
// 使用valiDataForm: FormGroup=this.fb.group({
username: ['', [Validators.required, this.v.usernameVal]],
password: ['', [Validators.required, this.v.passwordVal]],
phone: ['', [Validators.required, this.v.phoneVal]]
  })
ngOnInit(): void {
  }
} 

page.component.html

<divaction=""[formGroup]="valiDataForm">    帐号:
<inputrequiredtype="text"formControlName="username"><br><p*ngIf="flag"> {{valiDataForm.get('username')?.errors?.['msg']}}</p>    密码:
<inputrequiredtype=" text"formControlName="password"><br><p*ngIf="flag">{{valiDataForm.get('password')?.errors?.['msg']}}</p>    手机号:
<inputrequiredtype="text"formControlName="phone"><br><p*ngIf="flag">{{valiDataForm.get('phone')?.errors?.['msg']}}</p><button(click)="submit()">提交</button></div>


相关文章
|
资源调度 JavaScript 容器
Angular封装WangEditor富文本组件
Angular封装WangEditor富文本组件
309 0
angular的format封装
在标签上使用管道符进行format
|
前端开发 JavaScript
【Angular教程】组件动效/动态组件/视图封装模式
【Angular教程】组件动效/动态组件/视图封装模式
250 0
【Angular教程】组件动效/动态组件/视图封装模式
|
3月前
|
API 开发者 UED
PrimeFaces:JSF的魔法衣橱,解锁UI设计的无限可能!
【8月更文挑战第31天】本文介绍如何结合 JSF(JavaServer Faces)和 PrimeFaces 构建美观且功能强大的现代用户界面。PrimeFaces 提供丰富的 UI 组件库,包括按钮、输入框、数据网格等,支持现代 Web 标准,简化界面开发。文章通过具体示例展示如何使用 `&lt;p:inputText&gt;` 和 `&lt;p:calendar&gt;` 等组件创建用户表单,并用 `&lt;p:dataTable&gt;` 展示数据集合,提升 JSF 应用的易用性和开发效率。
60 0
|
3月前
|
开发者 安全 SQL
JSF安全卫士:打造铜墙铁壁,抵御Web攻击的钢铁防线!
【8月更文挑战第31天】在构建Web应用时,安全性至关重要。JavaServer Faces (JSF)作为流行的Java Web框架,需防范如XSS、CSRF及SQL注入等攻击。本文详细介绍了如何在JSF应用中实施安全措施,包括严格验证用户输入、使用安全编码实践、实施内容安全策略(CSP)及使用CSRF tokens等。通过示例代码和最佳实践,帮助开发者构建更安全的应用,保护用户数据和系统资源。
52 0
|
3月前
|
开发者 C# C++
揭秘:如何轻松驾驭Uno Platform,用C#和XAML打造跨平台神器——一步步打造你的高性能WebAssembly应用!
【8月更文挑战第31天】Uno Platform 是一个跨平台应用程序框架,支持使用 C# 和 XAML 创建多平台应用,包括 Web。通过编译为 WebAssembly,Uno Platform 可实现在 Web 上运行高性能、接近原生体验的应用。本文介绍如何构建高效的 WebAssembly 应用:首先确保安装最新版本的 Visual Studio 或 VS Code 并配置 Uno Platform 开发环境;接着创建新的 Uno Platform 项目;然后通过安装工具链并使用 Uno WebAssembly CLI 编译应用;最后添加示例代码并测试应用。
107 0
|
3月前
|
前端开发 开发者 安全
JSF支付功能大揭秘:探索如何在Java世界中实现安全无缝的在线支付体验
【8月更文挑战第31天】在电子商务和在线交易日益普及的今天,实现在线支付功能已成为许多Web应用的必备需求。JavaServer Faces (JSF) 作为一种流行的Java Web框架,提供了丰富的组件和工具来构建用户界面,包括与支付网关集成以实现在线支付。支付网关是处理信用卡和借记卡支付的系统,在商家和银行之间起到桥梁作用。本文将探讨如何使用JSF与支付网关集成,以及实现在线支付功能时需要考虑的关键点
47 0
|
3月前
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
52 0
|
3月前
|
JavaScript 开发者
从零基础到实战应用:Angular入门指南带你一步步构建你的第一个Web应用——全面介绍环境搭建、项目创建、组件开发与应用集成
【8月更文挑战第31天】本文档是针对初学者的Angular入门指南。通过详细步骤与示例代码,教你如何使用Angular CLI搭建开发环境、创建新项目、添加及配置组件,并运行首个应用。Angular是由Google开发的强大Web框架,专为高效构建复杂单页应用设计。按照本指南操作,你将能够快速上手Angular,开启Web应用开发之旅。
103 0