Angular2.0 Form

对于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 的属性。

时间: 2024-12-12 09:19:02

Angular2.0 Form的相关文章

Angular2.0开发-WebStorm配置及第一个Hello World(一)

公司项目开发用到angular2.0+webpai,特此记录学习开发笔记. WebStorm是Angular2.0开发的不二选择,下面将逐步介绍WebStorm的安装配置及使用示例.  1.下载最新版本WebStorm:WebStorm下载 2.创建一个Angular项目 Angular CLI 可以看到图片上有两个关于Angular的选择.一个是AngularJS,这个创建的是基于Angular1.0版本类的project.另一个Angular CLI创建的才是基于Angular2.0的项目.

Angular2.0视频教程来了!

各位道友大家好: "Angular2.0视频教程"来了!这是全球第一个完整的Angular 2.0系列视频教程,到目前为止也是唯一的,该系列的视频在优酷和youtube同步播出. 还是大漠穷秋老师,还是熟悉的声音,还是淡淡的小幽默.3年前,大漠老师在慕课网发布了"AngularJS实战" http://www.imooc.com/learn/156 系列视频教程,迄今为止已经有14万人学习,整体评分9.6分.很多道友反馈说,通过学习这门课程找到了心仪的工作,大漠老师

angular2.0学习笔记1.开发环境搭建

开发环境, 1.安装Node.js®和npm, node 6.9.x 和 npm 3.x.x 以上的版本. 更老的版本可能会出现错误,更新的版本则没问题. 控制台窗口中运行命令 node -v 和 npm -v,来查看版本 2. 运行 npm config set registry https://registry.npm.taobao.org 因为国内访问http://npmjs.org(angular2.0组件库) 的站点访问经常不是很顺畅,所以换成淘宝的镜像, 3. 然后全局安装 Angu

angular2.0最新版环境搭建与常见问题

第一步:安装Node.js,npm(安装Node.js的时候自动就安装了npm) 第二部:安装npm,由于npm官网镜像访问太慢,我们使用淘宝的npm镜像,在node命令窗口(windows的cmd.linux的终端)$ npm install -g cnpm --registry=https://registry.npm.taobao.org 第三部:设置淘宝镜像,临时切换npm源为taobao源(速度快一点):npm config set registry https://registry.

Angular2.0: User Input

1.Angular 2.0 中的变量 对输入值的获取,我们可以通过$event 来获取,也可以通过变量来获取. template: ` <input (keyup)="onKey($event)"> <p>{{values}}</p>` 即,当user 按下并释放 一个按钮是,就会触发keyup 事件,Angular在$event 变量提供一个相应的DOM事件对象, export class KeyUpComponent_v1 { values =

Angular2.0 环境搭建

最近在学习Angular2的使用,其实看过Angular2 文档的都知道,相比于之前的Angular1,Angular2 的改动还是挺大的. 而对于'angular2 的本地开发环境的搭建的中,我们首先要在本地安装nodeJS 我们可以到官网上clone 一个quickstart 的demo(如果想按着官网上写的用git 命令去clone 一个项目文件,就要先安装一个git) 也可以自己新建 然后在node.js command prompt 中进入项目文件所在的文件路径 然后执行 npm in

angular2.0新特性总结

1:$scope将从Angular 2.0中移除,取而代之的是ES6类. 2:双向数据绑定:因双向数据绑定在大型应用中带来的问题  Angular 2.0引入了无回路有向图的单向结构概念. 3: 依赖注入   2.0还希望通过懒加载来引入依赖注入. 4: 模块化 将肯定使用ES6的模块语法 5:组件通信 :除了$broadcast 和 $emit,2.0还有一些小得变化,1)你可以在DOM层发送消息,而不是在scope: 版权声明:本文为博主原创文章,未经博主允许不得转载.

5分钟快速入门angular2。0

让我们从零开始,在JavaScript中建立一个超级简单的角angular2.0的应用. 请看demo <!DOCTYPE html> <html> <head> <title>Angular 2 QuickStart JS</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link

angular2开发01

angular2开发01 1. angular2 开发准备 1.1. 安装node 1.2. 安装npm 1.3. 运行qickStart 1 angular2 开发准备 开发环境是linux mint 17.3 64位 1.1 安装node node在linux的部署主要有三种方式,第一种方式,使用apt-get install nodejs安装,这种方式有缺点,安装后的版本太低(0.10),官网都已经到4.5了; 第二种就是自己下载源码,手动编译二进制,这种方式要求有点高,属于高级用 户方式