原文

  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. HASH Partitioning--转载

    原文地址:https://dev.mysql.com/doc/refman/5.1/en/partitioning-hash.html HASH Partitioning [+/-] 18.2.3.1 ...

  2. Vue Cli 打包之后静态资源路径不对的解决方法

    cli2版本: 将 config/index.js 里的 assetsPublicPath 的值改为 './' . build: { ... assetsPublicPath: './', ... } ...

  3. 【2017 Multi-University Training Contest - Team 7】Just do it

    [Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6129 [Description] 设定b[i]=a[1]^a[2]^a[3]^------a[i] ...

  4. 洛谷 P1755 斐波那契的拆分

    P1755 斐波那契的拆分 题目背景 无 题目描述 已知任意一个正整数都可以拆分为若干个斐波纳契数,现在,让你求出n的拆分方法 输入输出格式 输入格式: 一个数t,表示有t组数据 接下来t行,每行一个 ...

  5. theme-windowAnimationStyle 动画四个方法的意义

    首先看代码 <style name="Animation.Activity"> <!--A打开B,B的出现动画--> <item name=" ...

  6. 10. ZooKeeper之搭建伪集群模式。

    转自:https://blog.csdn.net/en_joker/article/details/78673456 在集群和单机两种模式下,我们基本完成了分别针对生产环境和开发环境ZooKeeper ...

  7. JS里面的indexOf()函数

    stringObject.indexOf(searchvalue,formindex); searchvalue在字符串首次出现的位置,位置是从0开始算的.

  8. Android RGB颜色对比表

    一  RGB颜色对照表:        注:内容来自http://rgb.phpddt.com/   里面有在线颜色摄取器   #FFFFFF   #FFFFF0   #FFFFE0   #FFFF0 ...

  9. 基于ContentObserver来动态取消或加入屏幕超时任务

    前面也说了.ContentObserver能够来监控数据库里某一项数据的变化,当然也能够同一时候监控多个数据项的变化. 笔者在项目中须要改动到屏幕超时的需求,比方在车载业务中,倒车事件发生的时候,是不 ...

  10. 使用Intent的Flag设置启动參数

    Intent中关于激活Activity的Flag Intent类定义了一批常量,用于配置激活Activity时的相关參数; 在Intent中设置Flag ·调用Intent的setFlags()或ad ...