Angular 中的表单验证

阅读时长 4 分钟读完

在 Angular 中,表单验证是非常重要的一环,因为一个良好的表单验证能够提升用户体验,降低后台负担。本文将会讲解 Angular 中表单验证的常见方式,并提供示例代码。

基本使用

Angular 中表单验证最基本的方式是使用 Angular 内置的验证器。

我们可以在表单控件的 validators 属性中提供验证器,这些验证器可以是单个的也可以是一组。例如,我们要验证用户名是否为空:

在这个表单中,我们给了 input 元素一个名字为 “username” ,然后在 required 属性中设置了必填验证器。

当我们点击提交按钮时,如果用户名为空,则表单无法提交。这是因为 Angular 已经对该表单元素增加了 ng-invalidng-dirty 这两个 CSS 类。

自定义验证器

Angular 也允许我们定义自己的验证器。我们可以使用 Validators 类中提供的静态方法来定义一个验证器。

例如,我们要验证两个密码是否一致:

-- -------------------- ---- -------
------ - --------- - ---- ----------------
------ - ------------ ---------- ---------- - ---- -----------------

------------
  --------- --------------------
  ------------ ---------------------------------
--
------ ----- --------------------- -
  ------------ - --- -----------
    --------- --- --------------- ---------------------
    --------------- --- --------------- ---------------------
  ---

  ------ --------------------------------- ---------- -
    ----- -------- - --------------------------------
    ----- -------------- - --------------------------------------

    -- ---------------------- -- -- -
      ------ -----
    -

    -- --------------- --- --------- -
      ------ -
        ------------- -----
      --
    -

    ------ -----
  -
-

在这个表单中,我们使用了两个 FormControl ,分别表示密码和确认密码,然后将它们放在一个 FormGroup 中。

同时,我们自定义了一个名为 passwordMatchValidator 的验证器函数。这个函数需要使用 formGroup.get 方法来获取表单元素的值,并使用 return 语句返回验证结果。

在模板中使用自定义验证器

一旦我们定义了一个自己的验证器,我们可以在 HTML 模板中使用它。例如,我们可以为确认密码字段添加自定义验证器:

注意 input 元素中的 [validatePasswordMatch] 属性。它的值为 passwordForm,表示这个验证器是基于整个表单而不是单个控件的。

此外,我们也根据这个属性的值绑定了 passwordRepeat 变量,它表示输入框中的确认密码。我们将它绑定到 ngModel 属性中可以实现双向绑定。

在最后,我们在 div 元素中使用 *ngIf 指令来根据 passwordRepeat.errors 判断验证是否失败。

总结

在 Angular 中,表单验证是非常重要的。我们可以使用内置的验证器,也可以定义自己的验证器。无论哪种方法,都要确保表单验证能够提升用户体验,降低后台负担。

本文提供了基本的示例代码,希望对读者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647ff67c48841e9894f79328

纠错
反馈