博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Angular2.js——表单(上)
阅读量:4594 次
发布时间:2019-06-09

本文共 3050 字,大约阅读时间需要 10 分钟。

表单创建一个有效、引人注目的数据输入体验。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',//在模板中创建添加
标签 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中创建添加
标签 //包裹
template:`
` //模板里面添加此标签(hero-form里面的内容)})export class AppComponent1{}

 

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

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

 

    
form表单

个人信息

 

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

显示的效果为

 

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

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

效果为

 

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

参考:

 

转载于:https://www.cnblogs.com/zhaixr/p/6600272.html

你可能感兴趣的文章
BZOJ2137: submultiple(生成函数,二项式定理)
查看>>
winform程序关闭界面时弹出提示框
查看>>
vue 解决页面加载时闪烁出现vue标签或者指令的问题v-cloak
查看>>
iOS中Block介绍 基础
查看>>
Android 服务类Service 的详细学习
查看>>
通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(二)
查看>>
poj Dropping tests 01分数规划---Dinkelbach算法
查看>>
django文件上传和序列化
查看>>
宫廷秘方,给大家分享一下,祝大家身体健康
查看>>
iOS 远程推送
查看>>
2016计蒜之道复赛A 百度地图的实时路况
查看>>
How to get md5 and SHA1 in objective c (iOS sdk)
查看>>
代动词
查看>>
虚拟私有云(Virtual Private Cloud,专有网络)配置方式总结
查看>>
用Latex写学术论文: IEEE Latex模板和文档设置(\documentclass)
查看>>
POJ——T3417 Network
查看>>
JQuery和Js中,如何让ajax执行完后再继续往下执行?(已解决,示例)
查看>>
VMWare12pro安装Centos 6.9教程
查看>>
Spark笔记之使用UDF(User Define Function)
查看>>
找规律 UVALive 6506 Padovan Sequence
查看>>