Angular4表单验证代码详解


Posted in Javascript onSeptember 03, 2017

 背景:

     最近在itoo页面调整的时候,发现页面表单或者是文本框没有做基本的判断操作,所以着手demo一篇,希望对大家有帮助!!

--------------------------------------------------------------------------------

1.创建表单组件:

ng g c login1

2.1单规则验证:

<label>用户名:</label>
 <input type="text" #userNameRef=ngModel [(ngModel)]=userName required>
 <span [style.color]="userNameRef.valid ? 'black':'red'">{{userNameRef.valid}}</span>

--------------------------------------------------------------------------------

效果:

Angular4表单验证代码详解

Angular4表单验证代码详解

2.2.多规则验证:(不能为空,用户名和密码的长度)

<div class="form-group">
 <label>用户名:</label>
 <input type="text" class="form-control" #userNameRef=ngModel minlength="3" maxlength="8" [(ngModel)]=userName required>
 <span [style.color]="userNameRef.valid ? 'black':'red'">{{userNameRef.valid}}</span>
</div>

错误原因提示方式:

<div class="form-group">
 <label>用户名:</label>
 <input type="text" class="form-control" #userNameRef=ngModel minlength="3" maxlength="8" [(ngModel)]=userName required>
 <span [style.color]="userNameRef.valid ? 'black':'red'">{{userNameRef.errors|json}}</span>
 <div *ngIf="userNameRef.errors?.required">this is required</div>
<div *ngIf="userNameRef.errors?.minlength">should be 3 chacaters</div>
</div>

效果:

###:初始化,没有输入数据:

Angular4表单验证代码详解

###:输入数据,但是长度小于3:

Angular4表单验证代码详解

###:合法输入:

Angular4表单验证代码详解 

  当然这里有一个问题,就是合法的时候usernameRef.errors=null,但是用户看起来不太美观,所以就需要判断当usernameRef.errors=null的时不出现:

<span [style.color]="userNameRef.valid ? 'black':'red'" *ngIf="userNameRef.errors!=null">{{userNameRef.errors|json}}</span>

具体实例登陆代码:

<form #form="ngForm" (ngSubmit)="form.form.valid && submit(form.value)" novalidate class="form-horizontal" role="form">
 <div class="form-group" [ngClass]="{ 'has-error': form.submitted && !userName.valid }">
  <label class="col-sm-2 control-label">用户名:</label>
  <div class="col-sm-10">
   <input required name="userName" [(ngModel)]="user.userName" #userName="ngModel" type="text" class="form-control" placeholder="请输入用户名...">
   <div *ngIf="form.submitted && !userName.valid" class="text-danger">用户名必须输入!</div>
  </div>
 </div>
 <div class="form-group">
  <label class="col-sm-2 control-label">密码:</label>
  <div class="col-sm-10" [ngClass]="{'has-error': form.submitted && !password.valid }">
   <input required minlength="8" maxlength="12" [(ngModel)]="user.password" name="password" #password="ngModel" type="password" class="form-control" placeholder="请输入密码...">
   <div *ngIf="form.submitted && !password.valid" class="text-danger">密码必须输入,至少要8位!</div>
  </div>
 </div>
 <div class="form-group">
  <div class="col-sm-offset-2 col-sm-10">
   <button type="submit" class="btn btn-success">登录</button>
  </div>
 </div>
</form>

login.component:

import { Component, OnInit} from '@angular/core';
import{UserModel} from '../model/user.model';//引入了usermodel
@Component({
 selector: 'app-login',
 templateUrl: './login.component.html',
 styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
 constructor() { }
 //定义user为Usermodel
 private user=new UserModel();
 ngOnInit() {
 }
/**
 * 登陆事件
 * @param form 表单中的输入值
 */
 submit(form){
 if(form.username=="1"&&form.password=="12345678"){
  alert("登录成功了");
 }else{
  alert("非法用户");
 }
 }
}

3.userModel:

export class UserModel{
 userName:string;
 password:string;
}

效果:

1.未填时点击登陆:

Angular4表单验证代码详解 

2.输入登陆:

Angular4表单验证代码详解 

3.非法用户: 

Angular4表单验证代码详解

总结

以上所述是小编给大家介绍的Angular4表单验证代码详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
基于jquery的商品展示放大镜
Aug 07 Javascript
禁止你的左键复制实用技巧
Jan 04 Javascript
jQuery实现图片渐入渐出切换展示效果
Aug 15 Javascript
jQuery实现带水平滑杆的焦点图动画插件
Mar 08 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
Jun 15 Javascript
AngularJS 中ui-view传参的实例详解
Aug 25 Javascript
详解vue-element Tree树形控件填坑路
Mar 26 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
Jul 05 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
Sep 21 Javascript
Vue.js中的高级面试题及答案
Jan 13 Javascript
微信小程序实现上传多张图片、删除图片
Jul 29 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
Nov 16 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
Sep 03 #jQuery
JS switch判断 三目运算 while 及 属性操作代码
Sep 03 #Javascript
javascript帧动画(实例讲解)
Sep 02 #Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
Sep 02 #Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
Sep 02 #Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
Sep 02 #Javascript
使用vue-resource进行数据交互的实例
Sep 02 #Javascript
You might like
PHP之变量、常量学习笔记
2008/03/27 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
javascript背景时钟实现方法
2015/06/18 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
详解vue的diff算法原理
2018/05/20 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
浅谈Python基础—判断和循环
2019/03/22 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
如何将整数int转换成字串String
2014/03/21 面试题
建筑设计专业求职自我评价
2014/03/02 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
护士感人事迹
2014/05/01 职场文书
幼儿生日活动方案
2014/08/27 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
合同审查法律意见书
2015/06/04 职场文书
同事去世追悼词
2015/06/23 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
导游词之无锡梅园
2019/11/28 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python