在 Angular2 中实现自定义校验指令(确认密码)的方法

阅读时长 5 分钟读完

在Web应用程序中,我们经常需要对用户输入进行校验以确保数据的准确性。Angular提供了一种非常简单而强大的方式来实现表单验证 - 自定义指令。

在这篇文章中,我们将学习如何使用Angular 2中的自定义指令来实现一个基本的确认密码校验,以确保两个密码字段匹配。

创建一个新的 Angular 2 应用程序

首先,我们需要创建一个新的Angular 2项目。如果您已经有一个现有的项目,则可以跳过此步骤。

创建一个带有确认密码的表单

接下来,我们需要创建一个带有密码和确认密码字段的表单。在 app.component.html 文件中添加以下代码:

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

创建自定义指令

我们需要创建一个自定义指令来验证密码和确认密码是否匹配。在Angular 2中,我们可以通过 @Directive 装饰器来定义指令。

这将创建一个名为 PasswordConfirmationDirective 的新文件。在该文件中,我们需要实现 validate 方法来进行密码确认校验。

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

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

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

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

在上面的代码中,我们首先使用@Directive 装饰器将指令与 appPasswordConfirmation选择器关联起来。接着我们还声明了 NG_VALIDATORS 注入令牌以注册验证器。

然后我们定义了一个 @Input 属性 passwords,用于存储两个密码字段的名称。在 validate 方法中,我们获取密码和确认密码控件的值,并比较它们是否相等。如果不相等,则返回一个 ‘passwordMismatch’ 错误对象。

在表单中使用自定义指令

现在我们已经创建了一个自定义指令,我们需要将其应用到密码和确认密码输入框中。

在 app.module.ts 文件中,我们需要导入 ReactiveFormsModule 并将自定义指令添加到 declarations 中。

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

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

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

现在我们可以在密码和确认密码输入框中使用 appPasswordConfirmation 指令了。我们需要将两个字段的名称作为 @Input 传递给该指令。

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

- --------------------------------------------------------- --------
------------------------------------------------------------------------------
纠错
反馈