对前端开发人员来讲,表单是很是重要的,它负责用户与程序的交互。它承载着一部分数据校验的功能,以此减小服务端的压力。本文就angular表单验证的两种方式进行阐述,若有问题,欢迎指正。css
文章目录html
为了向模板驱动表单中添加验证,须要添加一些验证属性,这里就用户登陆界面为例进行说明前端
一:新建项目
到工做路径下,运行ng new valicate
建立一个angular项目,而后用vscode打开bootstrap
二:修改app.component.html模板文件
建立一个表单,有两个输入框,分别为用户名和密码,接下来对这两个输入框进行验证数组
app.component.htmlapp
<br><br> <div class="container-fluid"> <div class="row"> <div class="col-md-4"> </div> <div class="col-md-4"> <h1 class="form-group">Login</h1> <form role="form"> <div class="form-group"> <label for="exampleInputEmail1"> Email address </label> <input type="email" class="form-control" id="exampleInputEmail1" /> </div> <div class="form-group"> <label for="exampleInputPassword1"> Password </label> <input type="password" class="form-control" id="exampleInputPassword1" /> </div> <button type="submit" class="btn btn-primary"> Submit </button> </form> </div> <div class="col-md-4"> </div> </div> </div>
代码中运用到的样式均为Bootstrap4中提供的css样式,读者能够到其官网下载。
最终的样式以下:ide
三:添加校验
首先在app.module.ts
中,添加FormsModule
模块,并增长到imports数组中ui
app.module.tsspa
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { FormsModule } from '@angular/forms'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, FormsModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
而后在模板页面中添加校验器code
添加校验的app.component.html
<br><br> <div class="container-fluid"> <div class="row"> <div class="col-md-4"> </div> <div class="col-md-4"> <h1 class="form-group">Login</h1> <form role="form"> <div class="form-group"> <label for="exampleInputEmail1"> Email address </label> <input type="email" class="form-control" id="exampleInputEmail1" [(ngModel)]="email" name="email" #emailFC="ngModel" required/> </div> <div *ngIf="emailFC.invalid" class="alert alert-danger"> 请输入邮箱地址! </div> <div class="form-group"> <label for="exampleInputPassword1"> Password </label> <input type="password" class="form-control" id="exampleInputPassword1" /> </div> <button type="submit" class="btn btn-primary"> Submit </button> </form> </div> <div class="col-md-4"> </div> </div> </div>
最终效果以下:
四:注意事项
在Input标签中必须添加name属性,且 #name 与ts中class的属性名称不能相同,如图
一:在app.module.ts中引用ReactiveFormsModule
app.module.ts
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { StudentComponent } from './student/student.component'; @NgModule({ declarations: [ AppComponent, StudentComponent ], imports: [ BrowserModule, FormsModule, ReactiveFormsModule ], providers: [], bootstrap: [ AppComponent ] }) export class AppModule { }
未完,等待更新