原文

  https://www.jianshu.com/p/af359bd04f32

大纲

  1、表单的名字不可以和传入的值的名字相同
  2、在模板驱动表单的时候要使用angular表单的验证功能,需要将ngModel绑定到模板变量,通过模板变量来判断调用验证器
  3、模板驱动表单如何绑定radio单选按钮
  4、模板驱动表单如何绑定checkbox多选按钮
  5、模板驱动表单如何绑定select单选
  6、代码素材

1、表单的名字不可以和传入的值的名字相同

<!--
错误写法:#userName和[(ngModel)]='userName'
重传入的userName的名字相同,这样在解析模板的时候会出问题
-->
<input
name="userName" id="userName"
[(ngModel)]='userName'
required minlength="4" #userName="ngModel"
> <!--正确写法:-->
<input
name="userName" id="userName"
[(ngModel)]='un'
required minlength="4" #userName="ngModel"
>

2、在模板驱动表单的时候要使用angular表单的验证功能,需要将ngModel绑定到模板变量,通过模板变量来判断调用验证器

<!--
需要将ngModel绑定到模板变量#userName,
然后通过userName来调用angular的表单控制器
-->
<div class="form-field">
<label for="userName">名字:</label>
<input name="userName" id="userName"
[(ngModel)]='userName1'
required minlength="4" #userName="ngModel"
>
<div *ngIf="userName.invalid && (userName.dirty || userName.touched)">
<div *ngIf="userName.errors.required">
Name is required.
</div>
<div *ngIf="userName.errors.minlength">
Name must be at least 4 characters long.
</div>
</div>
</div>

3、模板驱动表单如何绑定radio单选按钮

<!--
//对应的ts文件中设置,这样单选按钮的默认选中就是man了
sex = 'man';
-->
<div class="form-field">
<label>性别</label>
<label class="subTitle" for="man">男:</label>
<input type="radio" name="sex" id="man" value="man" [(ngModel)]='sex'>
<label class="subTitle" for="feman">女:</label>
<input type="radio"
name="sex" id="feman" value="feman"
[(ngModel)]='sex'
>
</div>

4、模板驱动表单如何绑定checkbox多选按钮

<!--
对应ts文件中需要设置数据
noun = {
chinese:true,
english:true,
math:true,
run:true,
walk:true,
};
-->
<div class="form-field">
<label>名词</label>
<label class="subTitle" for="chinese">语文:</label>
<input type="checkbox"
name="chinese" id="chinese" checked="noun.chinese"
[(ngModel)]='noun.chinese'
>
<label class="subTitle" for="english">英语:</label>
<input type="checkbox"
name="english" id="english" checked="noun.english"
[(ngModel)]='noun.english'
>
<label class="subTitle" for="math">数学:</label>
<input type="checkbox"
name="math" id="math" checked="noun.math"
[(ngModel)]='noun.math'
>
<label class="subTitle" for="run">跑步:</label>
<input type="checkbox"
name="run" id="run" checked="noun.run"
[(ngModel)]='noun.run'
>
<label class="subTitle" for="walk">走路:</label>
<input type="checkbox"
name="walk" id="walk" checked="noun.walk"
[(ngModel)]='noun.walk'
>
</div>

5、模板驱动表单如何绑定select单选

<!--
对应的表单元素设置:weather = 'cloudy';
-->
<div class="form-field">
<label for="weather">天气</label>
<select id="weather" name="weather" [(ngModel)]='weather'>
<option value="sunny">晴天</option>
<option value="rain">雨天</option>
<option value="overcast">阴天</option>
<option value="cloudy">多云</option>
<option value="wind">大风</option>
</select>
</div>

6、代码素材

  angular代码实例中的angular-form中讲述了一些angular的form的使用,里面不仅有模板驱动型表单不同类型字段的绑定还有包括响应式表单不同字段的绑定方式,希望能给读者提供到帮助。

angular表单经验分享的更多相关文章

  1. Angular 表单(二) - 模板驱动表单

    import { Component, OnInit } from '@angular/core'; import { Hero} from '../hero'; @Component({ selec ...

  2. Angular 表单验证类库 ngx-validator 1.0 正式发布

    背景介绍 之前写了一篇 <如何优雅的使用 Angular 表单验证>,结尾处介绍了统一验证反馈的类库  ngx-validator  ,由于这段时间一直在新模块做微前端以及相关业务组件库, ...

  3. Angular表单 (一)表单简介

    Angular 表单 angular提供了两种不同的方法来通过表单处理用户输入:响应式表单和模板驱动表单.二者都从视图中捕获用户输入事件.验证用户输入.创建表单模型.修改数据模型,并提供跟踪这些更改的 ...

  4. Angular表单验证

    novalidate   去掉html5自带的验证 ng-minlength    规定输入文本的最小长度 ng-maxlength    规定输入文本的最大长度 ng-submit  接收一个方法名 ...

  5. angular表单

    angular的表单,点击确定进行创建,支持批量创建,表单验证有样式提醒; <!DOCTYPE html> <html lang="en"> <hea ...

  6. DOM之表格与表单基础分享

    我是沐晴,好久不见.马上要放假啦,也是比较的忙. 今天来谈谈表格和表单的基本知识.前期的写的都是比较基础的知识,后期会慢慢增加实例.一起来学习吧. 先看表格,DOM中提供了一些属性,便于我们获取表单节 ...

  7. 简单的angular表单验证指令

    <html ng-app="myApp"> <head> <meta charset="UTF-8"> <title& ...

  8. angular表单验证实例----可用的代码

    前段时间,公司做一个单页面,就是一个表单验证,早开始在菜鸟教程上关注了angular,所以下派上用场了 angular里面对于表单验证,设置了很多指令. 也就是说不用自己写一些逻辑,直接绑定指令就行. ...

  9. 从浅入深剖析angular表单验证

    最近手上维护的组件剩下的BUG都是表单验证,而且公司的表单验证那块代码经历的几代人,里面的逻辑开始变得不清晰,而且代码结构不是很angular. 是很有必要深入了解表单验证. 入门之前,我觉得应该先了 ...

随机推荐

  1. 洛谷——P1525 关押罪犯

    https://www.luogu.org/problem/show?pid=1525 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间 ...

  2. JQuery之为某个div加入行样式

    JQuery都是以$符号开头的.当然能够用jQuery取代$符号,他们是恒等的,同一时候也是相等的.()事实上就是一个方法,里面能够传递匿名函数等,选取某个div时,如id为div1则用$('#div ...

  3. go-web编程之处理xml

    摘抄自astaxie的开源书籍 build-web-application-with-golang 接下来的例子以下面XML描述的信息进行操作. <?xml version="1.0& ...

  4. BZOJ1503: [NOI2004]郁闷的出纳员(Splay)

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经 ...

  5. Python数据类型中的字符串类型

    1.换行字符:\n print ('I love python.\nAnd you?') 2.转义字符(\):\\ print ('\\\n\\') 3.制表字符(对齐表格的各列):\t print ...

  6. Maven搭建hadoop环境报Missing artifact jdk.tools:jdk.tools:jar:1.7(5种办法,2种正解)

    刚刚写的那一篇,是网上比较主流的解决办法. 鉴于实际情况,有伙伴的机器上没有遇到这个问题,我们再探究原因,最终还有4种情况需要说明. 先说,另外一种"正解". <depend ...

  7. iOS关闭键盘简单实现(objc/swift)

    Objective-C 代码实例方式一 [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; 假设一个view上有很多Text ...

  8. interpolator-动画执行方式

    动画中有一个属性是设置动画执行的方式, <?xml version="1.0" encoding="utf-8"?> <set xmlns:a ...

  9. Oracle调用Java类开发的存储过程、函数的方法

    oracle调用java类的基本步骤 1. 编写java代码,后续可以直接使用java代码,class文件或者jar包 2. 将写好的java代码导入到oracle数据库中,有两种方法:一种是使用lo ...

  10. Leetcode-求两数之和

    题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中 ...