如何在 Angular Forms 中显示验证或错误消息

发布日期:2026-07-03 21:10:05   来源 : 杭州电子商务研究院    浏览量 :7
杭州电子商务研究院 发布日期:2026-07-03 21:10:05  
7

介绍

Angular 使构建 Web 应用变得更加容易。Angular 结合了依赖注入和声明式模板,并集成了解决开发问题的最佳实践。

表单是任何应用中最常见的功能之一。用户可以使用表单登录、预订航班或订餐。您可以通过验证用户输入的准确性来提高整体数据质量。

本指南将介绍如何使用 Angular 表单显示验证或错误消息。

创建一个新的 Angular 项目

使用以下命令全局安装 Angular。

      npm install -g @angular/cli
    

然后输入以下命令来创建一个新的 Angular 项目。

      ng new ngValidation
    

添加一些文件并安装一些依赖项。导航到根应用程序目录并输入以下命令来启动服务器。

      cd my-app
ng serve --open
    

您将创建一个具有单个输入的表单,以了解 Angular 表单。首先,您必须在app.module.ts中包含反应式表单。

      // app.module.ts

import { ReactiveFormsModule } from '@angular/forms';

imports: [
    BrowserModule, ReactiveFormsModule
  ],
    

现在,我们可以添加下面的代码来显示表单。

      <div style="text-align:left">
  <h1>
    Welcome to {{title}}!!
  </h1>
  <form [formGroup]="myForm" novalidate>
        <div class="form-group">
          <label class="center-block">Username:
            <input class="form-control" formControlName="username">
          </label>
        </div>
        <div *ngIf="myForm.controls['username'].invalid && (myForm.controls['username'].dirty || myForm.controls['username'].touched)" class="alert">
            <div *ngIf="myForm.controls['username'].errors.required">
            Please enter username
          </div>
        </div>
  </form>
<p>myForm value: {{ myForm.value | json }}</p>
<p>myForm status: {{ myForm.status | json }}</p>
</div>
    

您还需要更新app.component.ts文件。

      // app.component.ts

import { Component } from '@angular/core';
import { FormGroup,  FormBuilder,  Validators } from '@angular/forms';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'My Angular Form Validation Example';
   myForm: FormGroup;
   constructor(private fb: FormBuilder) {
    this.createForm();
  }
   createForm() {
    this.myForm = this.fb.group({
       username: ['', Validators.required ]
    });
  }
}
    

模板驱动表单

您可以使用表单指令在 Angular 模板语法中创建模板驱动表单。按照以下步骤构建模板驱动表单:

  1. 创建一个具有初始表单布局的新 Angular 组件。

  2. 为每个表单控件添加要绑定的数据属性,并为每个表单输入控件添加一个属性。

  3. 显示/隐藏验证消息。

  4. 使用ngSubmit处理表单提交

  5. 可选:添加功能以最初禁用提交按钮并仅在表单有效后启用。

响应式表单

响应式表单用于创建包含响应式样式的表单。Angular 响应式表单支持响应式编程,它支持对非 UI 数据模型(通常从服务器检索)和面向 UI 的表单模型(包含屏幕上 HTML 控件的状态和值)之间的数据流进行详细管理。响应式表单提供了使用响应式模式、测试和验证的便利性。

我们来看一个例子。

      // app.component.ts

import { Component } from '@angular/core';
import { FormGroup,  FormBuilder,  Validators } from '@angular/forms';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'Angular Form Validation Tutorial';
   myForm: FormGroup;
   constructor(private fb: FormBuilder) {
    this.createForm();
  }
   createForm() {
    this.myForm = this.fb.group({
       username: ['', Validators.required ]
    });
  }
}
    

这里,您需要从@angular/forms 导入一些模块。

  1. 表单组
  2. 表单生成器
  3. 验证器和 ReactiveFormsModule
      // app.component.ts

constructor(private fb: FormBuilder) {
    this.createForm();
}
    

使用 FormBuilder 来处理验证。在构造函数中创建一个包含所有验证规则的表单。

      // app.component.ts

createForm() {
  this.myForm = this.fb.group({
       username: ['', Validators.required ]
  });
}
    

在此代码中将验证规则分配给表单对象。

      <form [formGroup]="myForm" novalidate>
        <div class="form-group">
          <label class="center-block">Username:
            <input class="form-control" formControlName="username">
          </label>
        </div>
        <div *ngIf="myForm.controls['username'].invalid && (myForm.controls['username'].dirty || myForm.controls['username'].touched)" class="alert">
            <div *ngIf="myForm.controls['username'].errors.required">
            Please enter username
          </div>
        </div>
  </form>
<p>Form value: {{ myForm.value | json }}</p>
<p>Form status: {{ myForm.status | json }}</p>
    

结论

现在您已经了解了模板驱动表单和响应式表单。当用户触摸任何输入字段但未输入值时,将显示一条错误消息。同样,当用户模糊输入字段而未输入值时,将显示一条错误消息。因此,我们能够显示表单字段的验证消息。

了解更多

探索 Pluralsight 的这些 Angular 课程以继续学习:

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据