0

我对 Angular 1.6 非常熟悉,刚刚开始学习 Angular 5 并查看响应式表单,如果这是一个新手问题,我深表歉意。我们的应用程序有很多复杂的验证规则,我可以看到在大多数情况下,使用响应式表单更容易实现它们。我有一些看起来更难的场景,特别是当验证器的输入是来自另一个控件的值时。这里有两个明显的例子:

  • “From”和“to”日期字段,其中“to”字段必须比“from”字段晚
  • “确认密码”字段必须与“密码”字段具有相同的值。

在 Angular 1 土地上,我会做这样的事情:

<input ng-model="vm.from" />
<input ng-model="vm.to" must-be-later-than="vm.from" />

<input ng-model="vm.password" />
<input ng-model="vm.confirmPassword" must-be-identical="vm.password" />

我会为 mustBeLaterThan 和 mustBeIdentical 编写自定义验证器指令,但我会在字段之间自动绑定,并且指令只需要编写一次。

在 Angular 2/4/5 反应式表单中,我似乎会创建验证器工厂函数,但我不清楚除了相关的 FormControl 之外,我将作为参数传递给它什么,这似乎很脏。我显然可以观察到一个领域的变化,并在另一个领域反复销毁和重新创建验证器,但这似乎效率低下且令人费解。在这样的场景中是否有更好的约定?

4

1 回答 1

0

我发现了这个约定(由于我对解决方案的假设,我无法以谷歌搜索的方式找到它)。您将这两个字段都放在一个 FormGroup 中,并将一个验证器添加到该组中。

于 2018-02-19T17:05:51.300 回答