对于Angular2.0 的Form表单中的隐藏和验证,个人觉得还是挺有意思的。

1.通过ngModel 跟踪修改状态与验证。

在表单中使用 ngModel 可以获得更多的控制权,包括一些常用的验证。

ngModel 不仅仅可以跟踪状态(表单中各个控件的状态)还可以用特定的Angular CSS 类来更新控件,以表达当前的状态

(如显示和隐藏)

ng-touched:控件已被访问过的css 类; ng-untouched 为没有被访问过的CSS 类

ng-dirty :控件值已经发生变化,ng-pristine 没有

ng-valid 控件值有效;ng-invalid 无效

如下,我们可以通过这种方式对class name 进行监控

先设置css

.ng-valid[required], .ng-valid.required  {
border-left: 5px solid #42A948; /* green */
} .ng-invalid:not(form) {
border-left: 5px solid #a94442; /* red */
}

然后通过param.className监控

<input type="text" class="form-control" id="name"
required
[(ngModel)]="model.name" name="name"
#param >
<br>
current class name :{{param.className}}

2.显示和隐藏验证提示信息

<label for="name">Name</label>
<input type="text" class="form-control" id="name"
required
[(ngModel)]="model.name" name="name"
#name="ngModel" >
<div [hidden]="name.valid || name.pristine"
class="alert alert-danger">
Name is required
</div>

需要注意的是,我们在input 标签中添加了个#name 变量。然后将ngModel 赋值给这个参数。

后年的name.valid 和 name.pristine 中的name 是这个参数变量 name

为什么是 “ngModel”? 指令的 exportAs 属性告诉 Angular 如何链接模板引用变量到指令。 这里把name设置为ngModel是因为ngModel指令的exportAs属性设置成了 “ngModel“

3.ngSubmit 和ngForm

ngForm 是Angular 自己创建的指令,并附加到form 标签上。

他是为了给form 元素扩充额外的特性。 它持有通过ngModel指令和name属性为各个元素创建的那些控件,并且监视它们的属性变化,包括有效性。

它还有自己的valid属性,只有当其中所有控件都有效时,它才有效。

<div [hidden]="submitted">
<h1>Form</h1>
<form (ngSubmit)="onSubmit()" #heroForm="ngForm">
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" required
name ="name" [(ngModel)]="model.name" #name="ngModel">
<div [hidden]="name.valid || name.pristine" class="alert alert-danger">Name is required</div>
</div>
<div class="form-group">
<label for="alterEgo">Alter Ego</label>
<input type="text" class="form-control" id="alterEgo"
[(ngModel)]="model.alterEgo" name ="alterEgo">
</div>
<div class="form-group">
<label for="power">Hero Power</label>
<select id="power" class="form-control" required
[(ngModel)]="model.power" name ="power">
<option *ngFor ="let pow of powers" [value]="pow">{{pow}}</option>
</select>
</div>
<button class="btn btn-default" [disabled] ="!heroForm.form.valid" >Submit</button>
</form>
</div>

如上code 将ngForm 赋值给一个变量,这样这个变量就代表了这个form的整体,并且可以通过这个变量来获取form 的属性。

最新文章

  1. $.grep(array, callback, [invert])过滤,常用
  2. delphi 时间格式操作
  3. windows下不打开浏览器访问网页的方法
  4. Swift - 自动布局库SnapKit的使用详解4(样例1:实现一个登录页面)
  5. 最小生成树Kruskal算法
  6. iOS多线程的初步研究(七)-- dispatch对象
  7. Linux 系统时钟(date) 硬件时钟(hwclock)
  8. Splay树再学习
  9. [未解出,hzwer]挖掘机
  10. 异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
  11. hdu_1576A/B(扩展欧几里得求逆元)
  12. linux下直接拷贝新版本R
  13. Eclipse项目中web app libraries和 Referenced Libraries区别
  14. 洛谷P3205 [HNOI2011]合唱队 DP
  15. 2.ReactJS基础(虚拟DOM,JSX语法)
  16. linux把文件压缩成.tar.gz的命令
  17. Confluence 6 查看你的许可证细节
  18. (递推)一只小蜜蜂... hdu2044
  19. 不同的最小割(cqoi2016,bzoj4519)(最小割树)
  20. 全键盘操作Windows

热门文章

  1. linux下清空文件全部内容,如log日志
  2. 第45天:2017webstrom下载破解汉化
  3. 【Python】从简单案列中揭示常用内置函数以及数据类型
  4. Activiti5工作流笔记一
  5. bzoj4501 旅行
  6. Django 2.0 学习(10):Django 定制化
  7. python 内存分析
  8. Redis的RDB和AOF持久化
  9. [洛谷P4171][JSOI2010]满汉全席
  10. 【Ubuntu】编写一个c语言代码