Angular2.js实现表单验证详解
发布时间 - 2026-01-11 02:01:58 点击率:次表单创建一个有效、引人注目的数据输入体验。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自定义表单验证功能实例详解
# 表单
# 绑定
# 创建一个
# 好了
# 可以使用
# 样式表
# 加载
# 就能
# 列表中
# 这段
# 我们可以
# 做个
# 可选
# 下一篇
# 主要内容
# 等内容
# 定了
# 个人信息
# 错误信息
# 引人注目
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
长沙做网站要多少钱,长沙国安网络怎么样?
如何用wdcp快速搭建高效网站?
利用 Google AI 进行 YouTube 视频 SEO 描述优化
如何构建满足综合性能需求的优质建站方案?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
如何在阿里云香港服务器快速搭建网站?
如何快速搭建个人网站并优化SEO?
浅谈Javascript中的Label语句
用v-html解决Vue.js渲染中html标签不被解析的问题
EditPlus中的正则表达式实战(5)
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Laravel如何处理异常和错误?(Handler示例)
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何在IIS中新建站点并解决端口绑定冲突?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
C语言设计一个闪闪的圣诞树
如何实现javascript表单验证_正则表达式有哪些实用技巧
🚀拖拽式CMS建站能否实现高效与个性化并存?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
Bootstrap整体框架之JavaScript插件架构
微信小程序 wx.uploadFile无法上传解决办法
如何在腾讯云免费申请建站?
怎么用AI帮你为初创公司进行市场定位分析?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何快速生成ASP一键建站模板并优化安全性?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
如何在IIS7中新建站点?详细步骤解析
原生JS获取元素集合的子元素宽度实例
济南网站建设制作公司,室内设计网站一般都有哪些功能?
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
nginx修改上传文件大小限制的方法
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
PHP 500报错的快速解决方法
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
微信小程序 input输入框控件详解及实例(多种示例)
Laravel如何生成API文档?(Swagger/OpenAPI教程)
三星、SK海力士获美批准:可向中国出口芯片制造设备
Laravel模型事件有哪些_Laravel Model Event生命周期详解
如何将凡科建站内容保存为本地文件?
什么是javascript作用域_全局和局部作用域有什么区别?
C++时间戳转换成日期时间的步骤和示例代码

