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 相关文章推荐
JavaScript实现Sleep函数的代码
Mar 04 Javascript
javascript attachEvent绑定多个事件执行顺序问题
Oct 20 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
JQuery中extend的用法实例分析
Feb 08 Javascript
利用JQuery阻止事件冒泡
Dec 01 Javascript
详解JavaScript的内置对象
Dec 07 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
Dec 26 Javascript
解决js ajax同步请求造成浏览器假死的问题
Jan 18 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
详解关于element el-button使用$attrs的一个注意要点
Nov 09 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
Jan 12 Javascript
Vue实现图片轮播组件思路及实例解析
May 11 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另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
django页面跳转问题及注意事项
2019/07/18 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
django教程如何自学
2020/07/31 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
AJAX的全称是什么
2012/11/06 面试题
本科毕业生应聘自荐信范文
2014/06/26 职场文书
高中运动会广播稿
2014/09/16 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书