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 相关文章推荐
RGB颜色值转HTML十六进制(HEX)代码的JS函数
Apr 25 Javascript
javascript 面向对象继承
Nov 26 Javascript
JQuery操作tr和td内容的方法实例
Mar 06 Javascript
求数组最大最小值方法适用于任何数组
Aug 16 Javascript
深入理解js generator数据类型
Aug 16 Javascript
手机端转换rem适应
Apr 01 Javascript
ES6新特性五:Set与Map的数据结构实例分析
Apr 21 Javascript
vue双向数据绑定知识点总结
Apr 18 Javascript
jQuery实现模糊查询的方法分析
May 10 jQuery
深入浅析Vue全局组件与局部组件的区别
Jun 15 Javascript
通过js给网页加上水印背景实例
Jun 17 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 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/09/07 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
PHP中16个高危函数整理
2019/09/19 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
Python使用pymysql小技巧
2017/06/04 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
Django 重写用户模型的实现
2019/07/29 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
python如何爬取动态网站
2020/09/09 Python
Python self用法详解
2020/11/28 Python
元旦晚会策划方案
2014/02/18 职场文书
2015年清明节活动总结
2015/02/09 职场文书
2015年人事科工作总结
2015/04/28 职场文书
千与千寻观后感
2015/06/04 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL