原文

  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. HUD——T 3836 Equivalent Sets

    http://acm.hdu.edu.cn/showproblem.php?pid=3836 Time Limit: 12000/4000 MS (Java/Others)    Memory Lim ...

  2. 洛谷 P2108 学英语

    P2108 学英语 题目描述 为了适应紧张的大学学习生活,小Z发愤图强开始复习巩固英语. 由于小Z对数学比较有好感,他首先复习了数词.小Z花了一整天的时间,终于把关于基数词的知识都搞懂了.于是小Z非常 ...

  3. Maven实战(五)——自己主动化Web应用集成測试

    自己主动化集成測试的角色 本专栏的上一篇文章讲述了Maven与持续集成的一些关系及详细实践,我们都知道,自己主动化測试是持续集成不可缺少的一部分,基本上,没有自己主动化測试的持续集成,都非常难称之为真 ...

  4. 怎样解决git提交代码冲突

    当我们使用git提交代码时,别人可能也同一时候改动了我们改动的文件,可是别人的先合入到配置库里边,这样当我们的提交要合入时.就会产生冲突,能够使用下面步骤来解决冲突: (1) git rebase   ...

  5. ubuntu-12.04工作区内容变换所属工作区

    最近一直纠结于ubuntu12.04窗口更改所属工作区问题,今天在网上看到了方法.记录下来 主要就是利用快捷键. 1.打开你想移动的窗口 2.使用快捷键Shift + Ctrl + Alt + Dow ...

  6. Property-属性动画

    今天第一次接触到属性动画.参考着 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38067475 的博客,自己学习下. 它的区别跟 ...

  7. 一句话解决Ping问题(主机,开发板,虚拟机)

    PC机使用网卡A连接开发板,VMWare就要使用同一个网卡A作为桥接网卡 步骤: 1.确定网卡A 2.VMWare选择网卡A作为桥接网卡 3.设置三者IP在同一网段 a.Windows网卡A的IP b ...

  8. PYTHON学习第四天课后总结:

    第三天学习课后总结: 今日重点: 流程控制 1,if 条件判断语句 2,while 循环 3,for 循环 一,if +条件判断语句: 1>   if+条件判断表达式: 子代码1 子代码2 子代 ...

  9. Qt源码分析之信号和槽机制(QMetaObject是一个内部struct)

    Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个 ...

  10. golang recover

    package main import "fmt" func divideByZero() { // Use this deferred function to handle er ...