1、要使用Angular自带的表单控制需要先引入相关模块(.ts文件):

 import { FormGroup, //表单对象类
       FormBuilder, //表单生成工具类
       Validators} //表单验证类
from "@angular/forms";

2、然后定义一个FormGroup对象,并且对它进行初始化(.ts文件):

 public advForm: FormGroup;
 this.advForm = this.formBuilder.group({
selAdvertiser:[''],
disAdvertiser:[''],
adv_cont_title:[''],
adv_cont_name:[''],
adv_email: ['', Validators.pattern("^([A-Za-z0-9!#\$%&'\*\+=\?\^_`\{\|\}~-]+[\.]?)+@([A-Za-z0-9]+[\.])+[A-Za-z]{2,4}$")],
adv_tel: ['', Validators.pattern('[^A-Za-z]+$')],
adv_fax: ['', Validators.pattern('[^A-Za-z]+$')],//使用正则表达式进行校验
proposal_num:[''],
contract_num:[''],
proposal_ver:[''],
contract_ver:[''],
package_name:[''],
description:[''],
deadline:[''],
period:[''],
agt_letter:[''],
credit_ass:['']
});

3、在模版页面使用后台已定义并初始化好的表单对象:

<div id="DocumentPanel" class="panel-collapse collapse in show" [formGroup]="advForm">
...
<div class="form_group_col">
<div><label class="ars-form-label">
<input type="checkbox" [disabled]="!edit_mode" class="form-checkbox" value="Y"
formControlName="agt_letter" />Agency
Appointment Letter</label>
</div>
</div>
...
</div>

可以看到上面的例子,外层的<div>使用了表单formGroup对象advForm,内部的<input>元素使用formControlName="agt_letter"来表明这个表单元素是对象FormGroup对象中的advForm(advForm实际上是FormController对象,只是上面使用了FormBuilder自动生成了)。

4、在模版页面使用表单验证的方法:

 <div class="">
<div class="error-message" *ngIf="agtForm.controls['agt_email'].invalid">must be Email Format.</div>
<div class="input-group-append">
<input type="text" class="form-control" id="agt_email" name="agt_email" formControlName="agt_email" />
</div>
</div>

留意上面例子,例子中是以FormGroup.controls['XXX'].invalid这样的语法来获取校验值的,如果该表单元素的内容符合校验,返回true,否则返回false。

5、表单元素取值、设值和控制其是否可编辑的方法:

//取值
this.proposalContract.advertiserId = this.advForm.get("selAdvertiser").value //设值
this.advForm.get("disAdvertiser").setValue(this.advCon.company_name); //设为可编辑/可用
this.advForm.get("selAdvertiser").enable(); //设为不可编辑/可用
this.advForm.get("selAdvertiser").disable();

Angular2+之使用FormGroup、FormBuilder和Validators对象控制表单(取值、赋值、校验和是否可编辑等)的更多相关文章

  1. Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传

    Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV       在Django中存 ...

  2. 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式。

    http://zhengxinlong.iteye.com/blog/848712 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name& ...

  3. javascript对象转换,动态属性取值

    $(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ...

  4. jsp学习与提高(二)——JSP 隐式对象、表单处理及过滤器

    1.JSP 隐式对象 JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. JSP所支持的九大隐式对象: 对象 描述 req ...

  5. TypeScript 中限制对象键名的取值范围

    当我们使用 TypeScript 时,我们想利用它提供的类型系统限制代码的方方面面,对象的键值,也不例外. 譬如我们有个对象存储每个年级的人名,类型大概长这样: type Students = Rec ...

  6. 页面间(窗口间)的取值赋值及获取iframe下的window对象

    ①同一个窗口中,获取某个iframe的信息 <body> <iframe id="PAID" name="PA" src="Item ...

  7. JS中JSON对象的定义和取值

    1.JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任 ...

  8. 如果没有<form>标签,也没有enctype="multipart/form-data"属性,怎么使用formData对象提交表单呢?如下方式

    form标签的enctype属性 enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 默认地,表单数据会编码为 "application/x-www-form-urlen ...

  9. (文章也有问题,请自行跳过)react中的状态机每次setState都是重新创建新的对象,如需取值,应该在render中处理。

    demo如下 class Demo4StateLearn extends React.Component { constructor(props) { super(props); this.state ...

随机推荐

  1. POJ 1077 Eight (BFS+康托展开)详解

    本题知识点和基本代码来自<算法竞赛 入门到进阶>(作者:罗勇军 郭卫斌) 如有问题欢迎巨巨们提出 题意:八数码问题是在一个3*3的棋盘上放置编号为1~8的方块,其中有一块为控制,与空格相邻 ...

  2. hdu6333 Harvest of Apples 离线+分块+组合数学(求组合数模板)

    Problem B. Harvest of Apples Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K ...

  3. Array List和Linked List实现分析

    一,前言 ​ 先来一张Collection集合图. ​ 今天分享一些关于Collection集合中的List,讲真的集合这东西在网上真是老生常谈了.说实话连本人都觉得腻了(哈哈),但是话又说回来,整个 ...

  4. 更改mac电脑图片默认存储位置

    1.创建存储位置screenshot 2.打开terminal 3.defaults write com.apple.screencapture location ~/Desktop/screensh ...

  5. Web框架之Gin

    Gin是一个用Go语言编写的web框架.它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍. 如果你是性能和高效的追求者, 你会爱上Gin. ...

  6. spring boot使用常规发送邮件

    spring boot使用常规发送邮件 1.pom.xml文件依赖: <!-- javax.mail begin--> <dependency> <groupId> ...

  7. Sublime Text 实用方法

    代码比对 安装Sublimerge插件 打开Sublime Text后,接着按Ctrl+Shift+P,并输入Install Package 待其加载完成,再输入Sublimerge Pro 当安装完 ...

  8. 5.cookie每个参数的意义和作用以及工作原理?

    cookie主要参数有: (1)expires 过期时间 (2)path cookie存放路径 (3)domain 域名 同域名下可访问 (4)Set-Cookie: name cookie名称

  9. Spring Cloud Eureka 分布式开发之服务注册中心、负载均衡、声明式服务调用实现

    介绍 本示例主要介绍 Spring Cloud 系列中的 Eureka,使你能快速上手负载均衡.声明式服务.服务注册中心等 Eureka Server Eureka 是 Netflix 的子模块,它是 ...

  10. C++输入输出常用格式(cin,cout,stringstream)

    输入格式 1.cin>>a; 最基本的格式,适用于各种类型.会过滤掉不可见字符例如空格,TAB,回车等 2.cin>>noskipws>>ch[i]; 使用了 no ...