全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Angular2.js实现表单验证详解

表单创建一个有效、引人注目的数据输入体验。Angular表单协调一组数据绑定控件,跟踪变更。验证输入的有效性,并且显示错误信息。

接下来,主要内容有:

1、使用组件和模板构建Angular表单;

2、用ngModel创建数据绑定,以读取和写入输入控件的值。

构建Angular表单

我们想构建包含姓名,电话,特长三个字段的表单

1、我们可以参照快速启动那篇,创建一个名为forms的新项目,也可以使用之前的项目进行修改;

2、创建Person类;

3、创建控制此表单的组件;

4、创建具有初始表单布局的模板;

5、使用ngModel双向数据绑定语法把数据属性绑定到每个表单控件中。

创建Person类

在app文件夹下创建hero.ts文件,内容为

export class Person{
  constructor(
    public id:number,
    public name:string,
    public ownpower:string,
    public power?:string //可填可不填,可选的 ?不能省略
  ){}
}
//创建一个类,定义它的属性

TypeScript编译器为每个public构造函数参数生成一个公共字段,在创建一个新的Person实例时,自动把参数赋给这些公共字段。

创建表单组件

在app文件夹下创建hero-form-component.ts文件:

import { Component } from '@angular/core';
import {Person} from './hero'; //引入hero.ts中的Person类
@Component({
  moduleId:module.id,//属性设置了基地址,用于从相对路径加载form.html模板文件
  selector: 'hero-form',//在模板中创建添加<hero-form>标签
  templateUrl:'../form.html'//模板上增加form.html里面的内容
})
export class HeroFormComponent {
  powers=['唱歌','跳舞','弹琴','画画'];
  model=new Person(1,'小明','跳舞',this.powers[2]);//实例化
  submitted=false;
  onsubmit(){this.submitted=true;}
  get diagnostic(){return JSON.stringify(this.model);} //这个先暂时不管
}

1、这段代码导入了Angular核心库以及我们刚刚创建的Person模型;

2、@Component装饰器的选择器将<hero-form>标签把这个表单放进父模板;

3、moduleId:module.id属性设置了基地址,用于从相对模块路径加载templateUrl;

4、templateUrl属性指向一个独立的HTML模板文件,使用外联模板;

5、位model和powers提供了演示用的假数据;

6、在最后增加diagnostic属性,她返回这个模型的JSON形式。在开发过程中用于调试。

修改app.module.ts启动文件

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {FormsModule} from '@angular/forms';//导入表单
import { AppComponent1 } from './app.component';
import{HeroFormComponent} from './hero-form.component';//导入新增加的组件类
//导入hero-form.component.ts中的HeroFormComponent
@NgModule({
imports: [
  BrowserModule,
  FormsModule //表单模板
],
declarations: [
  AppComponent1 ,
  HeroFormComponent //类名
],
bootstrap: [AppComponent1]
})
export class AppModule { }

1、导入FormsModule和新组件HeroFormComponent;

2、把FormModule添加到ngModel装饰器的imports列表中,这样应用就能访问模板驱动表单的所有特性,包括ngModel;

3、把HeroFormComponent添加到ngModule装饰器的declarations列表中,使HeroFormComponent组件在整个模块中可见。

修改app.component.ts文件

import { Component } from '@angular/core';
@Component({
  selector: 'my-app',//在index.html中创建添加<my-app>标签
  //包裹<hero-form></hero-form>
  template:`<hero-form></hero-form>`
  //模板里面添加此标签(hero-form里面的内容)
})
export class AppComponent1{}

关于表单的组建模板构建完了。

创建初始HTML表单模板,上文提到的form.html文件

 <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>form表单</title>
</head>
<body>
<div class="container">
  <h1>个人信息</h1>
  <form>
    <div class="form-group">
      <label for="name">姓名</label>
      <input type="text" id="name" required class="form-control">
    </div>
    <div class="form-group">
      <label for="ownpower">特长</label>
      <input type="text" class="form-control" id="ownpower">
    </div>
    <div class="form-group">
      <label for="power">能力选择</label>
      <select class="form-control" id="power" required>
        <!--循环-->
        <option *ngFor="let pow of powers" [value]="pow">{{pow}}</option>
      </select>
    </div>
    <button type="submit" class="btn btn-success">提交</button>
  </form>
</div>
</body>
</html>

我们可以使用css来美化表单,在index.html里面引入样式表文件

<!--样式表-->
  <link rel="stylesheet" href="css/bootstrap.min.css">

显示的效果为

使用ngModel进行双向数据绑定[(ngModel)]语法

修改form.html文件,拿姓名做个实例

<div class="form-group">
      <label for="name">姓名,显示为{{model.name}}</label>
      <input type="text" id="name" required class="form-control" [(ngModel)]="model.name" name="name" #name1="ngModel">
      <!--双向绑定:{{model.name}}-->
      <!--使用ngModwl进行双向绑定,其绑定了model.name,所以所有有model。name的都可以同时变化-->
    </div>

效果为

 好了,一个简单的表单就做好了,下一篇讲控制表单,校验错误等内容。

参考:https://angular.cn/docs/ts/latest/guide/forms.html

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Angularjs  # Angular2.js  # 表单验证  # AngularJS使用ngMessages进行表单验证  # angular实现表单验证及提交功能  # AngularJS中实现用户访问的身份认证和表单验证功能  # 详解AngularJS中的表单验证(推荐)  # AngularJS手动表单验证  # 详细解读AngularJS中的表单验证编程  # AngularJS实现的获取焦点及失去焦点时的表单验证功能示例  # 强大的 Angular 表单验证功能详细介绍  # AngularJS 表单验证手机号的实例(非必填)  # Angular4表单验证代码详解  # AngularJS自定义表单验证功能实例详解  # 表单  # 绑定  # 创建一个  # 好了  # 可以使用  # 样式表  # 加载  # 就能  # 列表中  # 这段  # 我们可以  # 做个  # 可选  # 下一篇  # 主要内容  # 等内容  # 定了  # 个人信息  # 错误信息  # 引人注目 


相关文章: 专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  小型网站建站如何选择虚拟主机?  如何通过免费商城建站系统源码自定义网站主题与功能?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何配置WinSCP新建站点的密钥验证步骤?  电商平台网站制作流程,电商网站如何制作?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  智能起名网站制作软件有哪些,制作logo的软件?  小程序网站制作需要准备什么资料,如何制作小程序?  如何在云虚拟主机上快速搭建个人网站?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  Swift中switch语句区间和元组模式匹配  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  如何高效生成建站之星成品网站源码?  如何用美橙互联一键搭建多站合一网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  中山网站制作网页,中山新生登记系统登记流程?  如何解决VPS建站LNMP环境配置常见问题?  如何在云主机上快速搭建网站?  如何设置并定期更换建站之星安全管理员密码?  建站主机选哪家性价比最高?  如何在搬瓦工VPS快速搭建网站?  制作网页的网站有哪些,电脑上怎么做网页?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  重庆市网站制作公司,重庆招聘网站哪个好?  如何零基础开发自助建站系统?完整教程解析  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  山东云建站价格为何差异显著?  制作网站的公司有哪些,做一个公司网站要多少钱?  学校建站服务器如何选型才能满足性能需求?  网站制作公司排行榜,抖音怎样做个人官方网站  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  C#如何在一个XML文件中查找并替换文本内容  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  自助网站制作软件,个人如何自助建网站?  公众号网站制作网页,微信公众号怎么制作?  建站之星安装后如何配置SEO及设计样式?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  python的本地网站制作,如何创建本地站点?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  如何将凡科建站内容保存为本地文件?  西安大型网站制作公司,西安招聘网站最好的是哪个?  实例解析Array和String方法  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  建站之星后台密码如何安全设置与找回? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。