Angular开发(十)-关于表单的基本认识
2017-05-09 14:48
337 查看
一、angular
表单提供的两种构建表单的方式
1、模板驱动-采用表单内置指令,内置的校验方式2、模型驱动-采用自定义表单,自定义校验方式
二、模板局部变量的认识
在DOM元素上在变量前面加上一个
#表示模板局部变量,类似传统的
javascript中的
document.getElementById
<input type="text" #name1 id="name1" /> <input type="button" value="提交" (click)="get(name1)" />
get(name1:any){ console.log(name1); console.log(name1.value); console.log(name1.id); }
三、angular
表单的模板驱动几大指令
1、ngForm是控制整个
form表单的
2、
ngModel是表单数据绑定所在点
3、
ngModelGroup是表单中分组的,常用于密码或者地址
使用方式
1、
ngForm的使用方式直接写在
form表单上赋值给模板局部变量
<form #myForm="ngForm"></form>
2、
ngModel的使用分两种情况
如果要进行双向绑定就使用双向绑定的规范:
[(ngModle)]="xxx"
如果仅仅是根据
ngForm获取表单的值那么就可以直接在表单中使用
ngModle就可以
使用案例
<div class="container"> <div class="row"> <div class="col-md-6"> <form #myForm="ngForm" (ngSubmit)="doSubmit(myForm)"> <div class="form-group"> <label>用户名:</label> <input type="text" class="form-control" name="username" placeholder="请输入用户名" [(ngModel)]="myform.username" /> </div> <fieldset ngModelGroup="passwordGroup"> <div class="form-group"> <label>输入密码:</label> <input type="password" class="form-control" [(ngModel)]="myform.first" name="password" placeholder="请输入密码" /> </div> <div class="form-group"> <label>确认密码:</label> <input type="password" class="form-control" [(ngModel)]="myform.last" name="repeatpassword" placeholder="请确认密码" /> </div> </fieldset> <div class="form-group"> <label>选择性别:</label> <div class="radio"> <label> <input type="radio" name="sex" value="男" [(ngModel)]="myform.sex"/>男 </label> <label> <input type="radio" name="sex" value="女" [(ngModel)]="myform.sex"/>女 </label> </div> </div> <div class="form-group"> <label>请选择省份:</label> <select name="province" ngModel class="form-control"> <option *ngFor="let item of myform.province" value="{{item.value}}">{{item.display}}</option> </select> </div> <div class="form-group"> <label>请选择省份:</label> <select name="province1" ngModel class="form-control"> <option *ngFor="let item of myform.province" [ngValue]="item">{{item.display}}</option> </select> </div> <div class="form-group"> <label>是否记住密码:</label> <div class="checkbox"> <label class="checkbox-inline"> <input type="checkbox" name="isSave" [(ngModel)]="myform.isSave" value=""/>是 </label> </div> </div> <div class="form-group"> <input type="submit" class="btn btn-primary" value="提交" /> </div> </form> </div> <div class="col-md-6"> <div>{{myForm.value | json:"2"}}</div> </div> </div> </div>
.... myform:any = { username:"张三", sex:"男", isSave:true, first:"", last:"", province:[ {value:"0",display:"广东省"}, {value:"1",display:"广西省"}, {value:"2",display:"湖南省"}, {value:"3",display:"福建省"} ] } constructor() { } ngOnInit() { } //提交表单数据 doSubmit(myForm:any){ console.log(myForm.value); }
四、表单的状态
状态 | 说明 | 备注 |
---|---|---|
valid | 表单值是否有效 | |
pristine | 表单值是否未改变 | |
dirty | 表单值是否已改变 | |
touched | 表单是否已经被访问 | |
untouched | 表单是否未被访问过 |
五、angular
表单中内置的表单校验有
规则 | 描述 | 说明 |
---|---|---|
required | 必填字段 | |
minlength | 最小长度 | |
maxlength | 最大长度 | |
pattern | 自己写正则 |
六、angular
表单中内置的样式
状态 | 为true的时候的css类 | 为false的时候的css类 |
---|---|---|
控件已经被访问了 | ng-touched | ng-untouched |
控件值已经发生改变 | ng-dirty | ng-pristine |
控件值是否有效 | ng-valid | ng-invalid |
<div class="form-group"> <label>用户名:</label> <input type="text" class="form-control" #username="ngModel" name="username" placeholder="请输入用户名" [(ngModel)]="myform.username" required minlength=3 maxlength=6/> <p [hidden]="username.valid || username.pristine" class="text-danger">用户名输入有误</p> </div>
.ng-valid[name]{ border:1px solid #360; } .ng-invalid[name]{ border:1px solid #f00; } .ng-untouched[name]{ border:1px solid #ddd; }
七、项目案例下载地址
相关文章推荐
- Angular开发(八)-关于表单的基本认识
- Angular开发(五)-关于组件的基本认识
- Angular开发(九)-关于响应式基本认识
- Angular开发(十三)-服务的基本认识及利用服务实现组件间的通信
- Angular开发(十八)-路由的基本认识
- 关于文摘插件提交表单的开发
- 关于变量的一些基本认识01
- pl/sql开发关于表存在则删除,字符串数组的定义和基本的plsql语法
- 走进AngularJs(一)angular基本概念的认识与实战
- 关于引用数据类型与基本数据类型的认识
- 3D Max插件开发的一些基本认识
- 数据库开发基本操作-关于sql server 2005 未开放1433端口的问题
- 关于用Delphi开发的一些基本的套路
- 这篇文档的价值在于详细的描述了三层交换的基本流程,以及一些关于三层交换表的有价值的技术细节。让读者对三层交换的认识提升到一个新的高度! 这篇文档的价值在于详细的描述了三层交换的基本流程,以及一些关于三
- 关于java 的基本开发工具:命令控制台的使用
- 传智播客-邮件开发(1)-关于电子邮件的一些基本常识
- 关于Ajax以及开发Ajaxt的基本步骤
- 【日常】关于Eclipse开发基于cxf的web services的基本步骤
- 关于移动网站网页的基本代码结构和一些移动网站开发建议
- 关于移动网站网页的基本代码结构和一些移动网站开发建议