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制作坦克大战全纪录(1)
Nov 27 Javascript
开源的javascript项目Kissy介绍
Nov 28 Javascript
JavaScript将字符串转换为整数的方法
Apr 14 Javascript
浅谈JavaScript中运算符的优先级
Jul 07 Javascript
基于原生JS实现图片裁剪
Aug 01 Javascript
使用vue编写一个点击数字计时小游戏
Aug 31 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 Javascript
微信小程序中单位rpx和rem的使用
Dec 06 Javascript
详解Vue2.x-directive的学习笔记
Jul 17 Javascript
JS实现点击Radio动态更新table数据
Jul 18 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
vue 解决provide和inject响应的问题
Nov 12 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短网址和数字之间相互转换的方法
2015/03/13 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
javascript中的几个运算符
2007/06/29 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
jquery选择checked在ie8普通模式下的问题
2014/02/12 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Python编写简单的HTML页面合并脚本
2016/07/11 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
python3正则模块re的使用方法详解
2020/02/11 Python
python实现图像拼接
2020/03/05 Python
简述数据库的设计过程
2015/06/22 面试题
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
传播学专业毕业生自荐信
2013/11/04 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
会计学毕业生求职信
2014/06/25 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书