angularcli 第五篇(输入框、表单处理)
注:涉及input表单时要在AppComponent中引入 FormsModule模块:
import{ FormsModule } from '@angular/forms'; @NgModule({ imports: [BrowserModule, FormsModule],})
目录:
1、在 Angular 表单中,通过 [(ngModel)]="username" 指令来实现数据双向绑定
2、添加简单的验证功能
3、显示表单验证失败的错误信息
4、创建表单(添加name属性)
5、获取表单提交的值
6、对表单输入内容进行分组 ngModelGroup
7、为表单的验证状态添加样式信息
8、为表单的验证状态添加样式信息
9、使用单选控件
10、使用多选控件
11、为多选控件添加必填验证
<!-- 下面的代码均是html中,同时在typescript中要定义username的初始值 -->
username = 'semlinker';
1、简单的输入框(双向绑定)
在angular表单中通过 ngModel 指令来实现双向绑定。
<!-- 1、在 Angular 表单中,通过 [(ngModel)]="username" 指令来实现数据双向绑定 --> <input type="text" name="111" [(ngModel)]="username">
{{username}} <!-- 获取输入框中输入的值 -->
2、表单验证功能
(1)目前 Angular 支持的内建 validators 如下:
required - 表单控件值是必填的
email - 表单控件值的格式是 email
minlength - 表单控件值的最小长度
maxlength - 表单控件值的最大长度
pattern - 表单控件的值需匹配 pattern 对应的模式
(2)如何判断表单控件是否通过验证?
在 Angular 中,我们可以通过 #userName="ngModel" 方式获取 ngModel 对象,然后通过 userName.valid 判断表单控件是否通过验证。
<!-- 2、添加简单的验证功能 -->
<input type="text" required [(ngModel)]="username" #userName="ngModel">{{userName.valid}}
3、显示验证失败的错误信息
在 Angular 中,可以通过 #userName="ngModel" 方式获取 ngModel 对象,然后通过该对象的 errors 属性,来获取对应验证规则 (如 required, minlength 等) 的验证状态。
<!-- 3、显示表单验证失败的错误信息 -->
<input type="text" required minlength="3" [(ngModel)]="username" #userName="ngModel"> <!-- 必填、最小长度为3 -->
<div *ngIf="userName.errors?.required">请您输入用户名</div> <!-- 输入框为空时提示“请输入用户名” -->
<div *ngIf="userName.errors?.minlength"> <!-- 长度小于最小长度时提示“用户名长度必须大于xx,当前长度xx” -->
用户名的长度必须大于 {{userName.errors?.minlength.requiredLength}},当前的长度为{{userName.errors?.minlength.actualLength}}
</div>
4、创建表单
使用<form> 标签来创建表单,一定要注意在使用 <form> 标签后,我们的 input 输入框,必须添加 name 属性。
<!-- 4、创建表单(添加name属性) -->
<form>
<input name="userName" type="text" required minlength="3"[(ngModel)]="username" #userName="ngModel">
<div *ngIf="userName.errors?.required">请您输入用户名</div>
<div *ngIf="userName.errors?.minlength">
用户名的长度必须大于 {{userName.errors?.minlength.requiredLength}},当前的长度为{{userName.errors?.minlength.actualLength}}
</div>
<button type="submit">提交</button>
</form>
5、获取表单提交的值
在 Angular 中,我们可以通过 #loginForm="ngForm" 方式获取 ngForm 对象,然后通过 loginForm.value 来获取表单的值。
<!-- 5、获取表单提交的值 -->
<form #loginForm="ngForm" (ngSubmit)="onSubmit(loginForm.value)">
<input type="text" required minlength="3" name="username" [(ngModel)]="username" #userName="ngModel">
<div *ngIf="userName.errors?.required">请您输入用户名</div>
<div *ngIf="userName.errors?.minlength">
用户名的长度必须大于 {{userName.errors?.minlength.requiredLength}},当前的长度为{{userName.errors?.minlength.actualLength}}
</div>
<button type="submit">提交</button>
{{loginForm.value | json}}
</form>
<!-- typescript的内容 -->
export class AppComponent {
username = 'semlinker'; 15 onSubmit(value) {
16 console.log(value); //打印出来是输入框的值
17 }
打印结果: 
6、对表单输入内容进行分组 ngModelGroup
ngModelGroup 指令是 Angular 表单中提供的另一特殊指令,可以对表单输入内容进行分组,方便我们在语义上区分不同性质的输入。
例如联系人的信息包括姓名及住址,现在需对姓名和住址进行精细化信息收集,姓名可精细化成姓和名字,地址可精细化成城市、区、街等。
<!-- 6、对表单输入内容进行分组 ngModelGroup -->
<form #loginForm="ngForm" (ngSubmit)="onSubmit(loginForm.value)">
<fieldset ngModelGroup="user">
<input type="text" required minlength="3" name="username" [(ngModel)]="username" #userName="ngModel">
<div *ngIf="userName.errors?.required">请您输入用户名</div>
<div *ngIf="userName.errors?.minlength">
用户名的长度必须大于 {{userName.errors?.minlength.requiredLength}},当前的长度为 {{userName.errors?.minlength.actualLength}}
</div>
<input type="password" ngModel name="password">
</fieldset>
<button type="submit">提交</button>
{{loginForm.value | json}}
</form> <!-- typescript -->
export class AppComponent {
username = 'semlinker'; onSubmit(value) {
console.dir(value);
}
}
以上代码成功运行后,{{loginForm.value | json}} 和控制台的输出结果:{ "user": { "username": "semlinker", "password": "123" } }
7、为表单的验证状态添加样式信息
在 Angular 表单中,若验证通过则会在表单控件上添加 ng-valid 类,若验证失败则会在表单控件上添加 ng-invalid 类。
<!-- 7、为表单的验证状态添加样式信息 -->
2 <!-- 在上例的基础上添加 css 代码 -->
input.ng-invalid {
border: 3px solid red;
}
input.ng-valid {
border: 3px solid green;
}
8、表单控件的状态
在 Angular 中可以通过 #userName="ngModel" 方式获取 ngModel 对象,进而获取控件的状态信息。
表单控件有以下 6 种状态:
valid - 表单控件有效
invalid - 表单控件无效
pristine - 表单控件值未改变
dirty - 表单控件值已改变
touched - 表单控件已被访问过
untouched - 表单控件未被访问过
<!-- 8、为表单的验证状态添加样式信息 -->
<input type="text" [(ngModel)]="username" #userName="ngModel"> <p>Name控件的valid状态:{{userName.valid}} - 表示控件有效</p>
<p>Name控件的invalid状态:{{userName.invalid}} - 表示控件无效</p>
<p>Name控件的pristine状态:{{userName.pristine}} - 表示控件值未改变</p>
<p>Name控件的dirty状态:{{userName.dirty}} - 表示控件值已改变</p>
<p>Name控件的touched状态:{{userName.touched}} - 表示控件已被访问过</p>
<p>Name控件的untouched状态:{{userName.untouched}} - 表示控件未被访问过</p>
9、使用单选控件
在 Angular 中,我们通过 <input name="***" type="radio"> 方式添加单选控件。
<!-- 9、使用单选控件 -->
<form #loginForm="ngForm">
<div *ngFor="let color of colors;">
<input [attr.id]="color" name="color" ngModel required [value]="color" type="radio">
<label [attr.for]="color">{{color}}</label>
</div>
{{loginForm.value | json}}
</form> <!-- typescript -->
export class AppComponent {
colors = ['红色', '黄色', '蓝色];
}
9 <p>Name控件的untouched状态:{{userName.untouched}} - 表示控件未被访问过</p>
10、使用多选控件
在 Angular 中,通过 <select name="***"> 方式添加多选控件。
<!-- 10、使用多选控件 -->
<form #loginForm="ngForm">
<select name="color" [ngModel]="colors[0]">
<option *ngFor="let color of colors;" [value]="color">
{{color}}
</option>
</select>
{{loginForm.value | json}}
</form> <!-- typescript -->
export class AppComponent {
colors = ['红色', '黄色', '蓝色];
}
11、为多选控件添加必填验证
<!-- 11、为多选控件添加必填验证 -->
<form #loginForm="ngForm">
<div>
<select name="color" [ngModel]="colors[0]" required>
<option *ngFor="let color of colors;" [value]="color">
{{color}}
</option>
</select>
<label></label>
</div>
{{loginForm.value | json}}
</form> <!-- css -->
select.ng-invalid + label:after {
content: '<-- 请做出选择!'
}
<!-- typescript -->
export class AppComponent {
colors = ['红色', '黄色', '蓝色];
}
angularcli 第五篇(输入框、表单处理)的更多相关文章
- struts2官方 中文教程 系列五:处理表单
先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单 即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...
- 2017.2.28 activiti实战--第七章--Spring容器集成应用实例(五)普通表单
学习资料:<Activiti实战> 第七章 Spring容器集成应用实例(五)普通表单 第六章中介绍了动态表单.外置表单.这里讲解第三种表单:普通表单. 普通表单的特点: 把表单内容写在 ...
- angularjs学习第五天笔记(第二篇:表单验证升级篇)
您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点 ...
- [AngularJS] AngularJS系列(3) 中级篇之表单验证
目录 基本验证 验证插件messages 自定义验证 基本验证 <form name="form" novalidate ng-app> <span>{{f ...
- HTML5学习笔记五:html5表单
表单是页面上非常重要的一块内容,用户可输入的大部分内容都是在表单元素中完成的,与后台的交互大多数也是通过点击表单中的按钮. 一.新增的元素和属性 1.新增属性: 1.1 form属性:页面中的任何元素 ...
- Gemini.Workflow 双子工作流入门教程五:业务表单开发
简介: Gemini.Workflow 双子工作流,是一套功能强大,使用简单的工作流,简称双子流,目前配套集成在Aries框架中. 下面介绍本篇教程:业务表单开发. 业务表单开发 业务表单的开发,和在 ...
- AngularJS(五):表单及输入验证
本文也同步发表在我的公众号“我的天空” 表单基础 表单是HTML中很重要的一个部分,基本上我们的信息录入都依靠表单,接下来我们学习如何在AngularJS中使用表单,首先看以下示例代码: <bo ...
- 第五节:表单标签的用法——value绑定和修饰符
1.表单标签的用法--value绑定和修饰符 value绑定的写法:v-bind:value 或者简写 :value 修饰符: lazy , Number , trim . 用法如: v-model ...
- Struct2(五)处理表单
简介: 1.表单的提交 表单和对应的Java模型的类 在此次的例子中,我们将会模仿一个用户提交表单的动作,具体提交表单做什么,不关心,我们需要知道 first last Name,Email addr ...
随机推荐
- Anaconda(三)
五.TensorFlow安装 这一天由于版本问题走了太多弯路.之前用的conda版本是最新的,自带Python3.7.5,装了之后倒是各种包都能装,用命令: pip install xxx conda ...
- Better ultra_simple for Slamtec RPLIDAR on Linux
Improved the ultra_simple program to visualize the samples with GLUT on Linux, tested with Slamtec R ...
- /bin/sh^M:解释器错误:没有那个文件或目录
在win下编辑的时候,换行结尾是\n\r , 而在linux下 是\n,所以才会有 多出来的\rsed -i 's/\r$//' configure 删除configure脚本中的\r
- MySQL 使用 ON UPDATE CURRENT_TIMESTAMP 自动更新 timestamp (转)
原文地址: https://blog.csdn.net/heatdeath/article/details/79833492 `create_time` timestamp not null defa ...
- Spring MVC -- 下载文件
像图片或者HTML文件这样的静态资源,在浏览器中打开正确的URL即可下载,只要该资源是放在应用程序的目录下,或者放在应用程序目录的子目录下,而不是放在WEB-INF下,tomcat服务器就会将该资源发 ...
- CentOS7.5 使用二进制程序部署Kubernetes1.12.2(三)
一.安装方式介绍 1.yum 安装 目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能 ...
- 容器服务如何在企业客户落地?Rancher 解决之道分享
Docker 的优势和趋势我想不必再赘述,那么对于非互联网公司的传统企业客户,以及我们大量的围绕企业客户做集成.交付解决方案的服务提供商,需要考虑的一个问题就是怎么样把容器技术以高质量.低成本.易维护 ...
- 【常用技巧】标准模板库(STL)
[常用技巧]标准模板库(STL) 在前几个章节中我们已经使用了诸如队列.堆.堆栈.vector 等标准模板库中的模板,切身感受到了它给我们带来的极大便利.在本节中,我们还要介绍两种标准模板——stri ...
- OpenVAS开源风险评估系统部署方案
OpenVAS,即开放式漏洞评估系统,是一个用于评估目标漏洞的杰出框架.功能十分强大,最重要的是,它是“开源”的——就是免费的意思啦- 它与著名的Nessus“本是同根生”,在Nessus商业化之后仍 ...
- 实用———springmvc接收参数校验
https://www.cnblogs.com/funyoung/p/8670550.html https://www.cnblogs.com/monkeydai/p/10068547.html He ...