📜  Angular 表单 - Javascript (1)

📅  最后修改于: 2023-12-03 15:29:23.952000             🧑  作者: Mango

Angular 表单 - Javascript

Angular 是一个流行的前端框架,允许你构建单页应用。其中一个强大的特性是它的表单功能。Angular 表单提供了丰富的表单控件和验证器,它们可以轻松地与组件绑定并进行双向数据绑定。在这里,我们将探讨 Angular 表单的一些关键概念和实践。

表单控件

表单控件是 Angular 表单的基本单元。它们表示用户输入的不同类型的数据,并提供与表单交互的功能。以下是一些常见的表单控件:

  • Input - 文本输入框
  • Select - 下拉选择列表
  • Checkbox - 复选框
  • Radio - 单选按钮
  • TextArea - 文本域
绑定表单数据

Angular 表单使用双向数据绑定来保持表单控件和组件相关联。在这种情况下,组件中的属性可以更改表单控件的值,反之亦然。以下代码片段演示了如何绑定表单数据:

<form>
  <label for="name">Name:</label>
  <input type="text" id="name" name="name" [(ngModel)]="person.name">
</form>

在这个例子中,我们将一个名为 person 的组件属性与一个输入表单控件绑定。ngModel 指令允许双向绑定数据,所以当输入框值更改时,组件中的 person.name 也会更改。

验证表单数据

Angular 表单提供了一组验证器,可以轻松验证不同类型的表单输入。以下代码片段演示了如何验证一个必填的输入框:

<form>
  <label for="name">Name:</label>
  <input type="text" id="name" name="name" [(ngModel)]="person.name" required>
  <div *ngIf="name.invalid && (name.dirty || name.touched)">
    <div *ngIf="name.errors.required">Name is required.</div>
  </div>
</form>

在这个例子中,我们使用了 required 属性指示 name 输入框是必填项。我们还使用 *ngIf 检查 name 表单控件是否处于无效状态并显示了一条错误消息。

创建自定义验证器

我们也可以创建自定义验证器来验证表单输入的值。以下代码片段演示了如何创建一个自定义验证器来验证电子邮件地址的格式:

import { AbstractControl, ValidatorFn } from '@angular/forms';

export function emailValidator(): ValidatorFn {
  return (control: AbstractControl): { [key: string]: any } | null => {
    const email = control.value;
    if (!email) {
      return null;
    }

    // Use regular expression to validate email format
    const pattern = /^[\w-]+@([\w-]+\.)+[\w-]{2,4}$/;
    return pattern.test(email) ? null : { 'invalidEmail': true };
  };
}

在这个例子中,我们创建了一个 emailValidator 函数,并将其添加到我们的自定义验证器列表中。该函数验证给定的控件是否有效。如果不是,函数返回 { 'invalidEmail': true }。当表单控件的值更改时,自定义验证器会自动被调用,并更新表单控件的状态。

总结

Angular 表单是 Angular 框架的一部分,提供了强大的表单控件和验证器。表单控件使用双向数据绑定将表单控件的状态链接到组件属性。自定义验证器可以用来验证表单输入的值。通过这种方式,Angular 表单使开发高效、可维护的表单变得容易。