当前位置: 首页
前端开发
Angular 2 表单开发教程:数据绑定、验证与提交

Angular 2 表单开发教程:数据绑定、验证与提交

时间:2026-08-31
转载

本教程详细讲解如何在 Angular 2 中构建表单,涵盖项目初始化、模型定义、组件与模块配置、模板驱动表单的双向数据绑定、状态验证及表单提交。通过完整代码示例与步骤说明,帮助开发者快速掌握 Angular 表单的核心用法。

在 Angular 2 中构建表单需要结合组件、模板与表单模块,实现数据绑定、校验与提交流程。本文将按步骤演示如何从零搭建一个网站信息录入表单,涵盖模型定义、双向绑定、状态反馈与提交控制,帮助开发者快速掌握模板驱动表单的核心机制。

初始化项目与定义数据模型

首先准备 Angular 2 项目环境,可参考官方 TypeScript 环境配置指南,或直接下载基础源码。解压后将目录重命名为 angular-forms,并修改 angular-forms/package.json 中的 "name": "angular-quickstart""name": "angular-forms"。完成后执行 cnpm install 安装依赖。

接下来定义表单所需的数据模型。在 angular-forms/app 目录下创建 site.ts,包含三个必需字段(id、name、url)与一个可选字段(alexa):

export class Site {
  constructor(
    public id: number,
    public name: string,
    public url: string,
    public alexa?: number
  ) {  }
}

其中 public 声明的字段为公有属性,alexa? 的问号表示该字段为可选。

创建表单组件与根模块配置

Angular 表单由 HTML 模板与处理数据的组件两部分组成。在 angular-forms/app 目录下创建 site-form.component.ts

import { Component } from '@angular/core';
import { Site }    from './site';

@Component({
  moduleId: module.id,
  selector: 'site-form',
  templateUrl: 'site-form.component.html'
})
export class SiteFormComponent {
  urls = ['www.runoob.com', 'www.google.com',
            'www.taobao.com', 'www.facebook.com'];
  model = new Site(1, '菜鸟教程', this.urls[0], 10000);
  submitted = false;
  onSubmit() { this.submitted = true; }
  // TODO: 完成后移除
  get diagnostic() { return JSON.stringify(this.model); }
}

@Componentselectorsite-form,表示可通过 标签嵌入父模板。templateUrl 指向独立的 HTML 模板文件,diagnostic 用于调试时输出模型的 JSON 数据。

模板驱动表单依赖 FormsModule,需在根模块中引入。修改 app/app.module.ts

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule }   from '@angular/forms';
import { AppComponent }  from './app.component';
import { SiteFormComponent } from './site-form.component';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule
  ],
  declarations: [
    AppComponent,
    SiteFormComponent
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

修改根组件 app/app.component.ts,将表单组件嵌入模板:

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: ''
})
export class AppComponent { }

编写模板与双向数据绑定

创建初始模板文件 app/site-form.component.html,包含基础表单结构:

网站表单

为使用 Bootstrap 样式,在项目根目录执行 cnpm install bootstrap --save,并在 index.html 中添加:

执行 npm start 后访问 http://localhost:3000/,可看到基础表单界面:

基础表单界面

接下来使用 ngModel 实现双向数据绑定,将表单控件与组件模型关联:

网站表单

{{diagnostic}}

每个 inputidlabelfor 对应,name 属性用于 Angular 表单模块注册控制器。运行后界面如下:

双向绑定表单界面

表单状态跟踪与验证反馈

ngModel 会根据控件状态自动添加 CSS 类,便于实现视觉反馈:

状态为 true 时的类为 false 时的类
控件已被访问ng-touchedng-untouched
控件值已变化ng-dirtyng-pristine
控件值有效ng-validng-invalid

在项目根目录创建 forms.css,添加状态样式:

.ng-valid[required], .ng-valid.required  {
  border-left: 5px solid #42A948; /* green */
}
.ng-invalid:not(form)  {
  border-left: 5px solid #a94442; /* red */
}

index.html 中引入该样式:

修改模板,通过模板引用变量 #name="ngModel" 获取控件状态,并控制错误提示的显隐:

网站表单

{{diagnostic}}

网站名是必需的

清空网站名字段后,错误提示将显示:

表单验证错误提示

表单提交与新增逻辑

在模板中添加“新增网站”按钮,并绑定点击事件:

在组件中实现 newSite() 方法,通过 active 标记与 setTimeout 重置表单状态:

active = true;
newSite() {
  this.model = new Site(5, '', '');
  this.active = false;
  setTimeout(() => this.active = true, 0);
}

使用 ngSubmit 指令处理表单提交,并通过模板引用变量 #siteForm="ngForm" 获取表单整体状态:

完整组件代码如下:

import { Component } from '@angular/core';
import { Site }    from './site';

@Component({
  moduleId: module.id,
  selector: 'site-form',
  templateUrl: 'site-form.component.html'
})
export class SiteFormComponent {
  urls = ['www.runoob.com', 'www.google.com',
            'www.taobao.com', 'www.facebook.com'];
  model = new Site(1, '菜鸟教程', this.urls[0], 10000);
  submitted = false;
  onSubmit() { this.submitted = true; }
  // TODO: 完成后移除
  get diagnostic() { return JSON.stringify(this.model); }
  active = true;
  newSite() {
    this.model = new Site(5, '', '');
    this.active = false;
    setTimeout(() => this.active = true, 0);
  }
}

完整模板代码如下:

网站表单

{{diagnostic}}

网站名是必需的

你提交的信息如下:

网站名

{{ model.name }}

网站 alexa 排名

{{ model.alexa }}

网站 URL

{{ model.url }}


通过 submitted 属性控制表单与提交结果的显隐。初始 submitted = false 显示表单,提交后设为 true 隐藏表单并展示结果:

submitted = false;
onSubmit() { this.submitted = true; }

最终项目目录结构如下:

项目目录结构

完整实例运行效果如下:

完整实例运行效果

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Angular 2 JavaScript 环境配置与首个应用搭建

Angular 2 JavaScript 环境配置与首个应用搭建

本文详细介绍如何使用 JavaScript 配置 Angular 2 运行环境,涵盖项目目录创建、依赖安装、组件与模块编写、启动逻辑及 HTML 入口配置。通过完整代码示例与运行步骤,帮助开发者快速搭建并运行首个 Angular 2 应用,同时提供环境排查与版本升级建议。

时间:2026-08-31 14:29
Angular 2 TypeScript 环境配置与项目搭建指南

Angular 2 TypeScript 环境配置与项目搭建指南

本文详细介绍如何使用 TypeScript 配置 Angular 2 开发环境,包括安装依赖、创建配置文件、编写组件代码、定义宿主页面以及编译运行应用程序的完整步骤。

时间:2026-08-31 14:25
Angular 2 数据显示:插值、ngFor 与 ngIf 实战指南

Angular 2 数据显示:插值、ngFor 与 ngIf 实战指南

本文详解 Angular 2 中将组件数据渲染到视图的三种核心方式:插值表达式、*ngFor 循环与 *ngIf 条件渲染。通过完整的 TypeScript 组件代码与模板示例,演示如何绑定基础属性、遍历数组及对象列表,并根据数据长度动态控制 DOM 显示。适用于需要快速掌握 Angular 模板语法与数据绑定机制的开发者。

时间:2026-08-31 14:17
Angular 2 用户输入事件绑定与模板变量实战

Angular 2 用户输入事件绑定与模板变量实战

本文介绍如何在 Angular 2 中处理用户输入事件,涵盖点击事件绑定、$event 对象获取输入、模板引用变量使用、按键过滤(keyup enter)及 blur 事件。通过完整代码示例,帮助开发者掌握 Angular 事件绑定的核心语法与最佳实践。

时间:2026-08-31 14:14
Angular 2 表单开发教程:数据绑定、验证与提交

Angular 2 表单开发教程:数据绑定、验证与提交

本教程详细讲解如何在 Angular 2 中构建表单,涵盖项目初始化、模型定义、组件与模块配置、模板驱动表单的双向数据绑定、状态验证及表单提交。通过完整代码示例与步骤说明,帮助开发者快速掌握 Angular 表单的核心用法。

时间:2026-08-31 14:11
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜