我对Angular 1.6非常熟悉,刚刚开始学习Angular 5并查看反应形式,如果这是一个新手问题,那么道歉。我们的应用程序有许多复杂的验证规则,我可以看到在大多数情况下它们如何更容易用反应式表单实现。我有一些似乎更难的情况,特别是当验证器的输入是来自另一个控件的值时。以下是两个明显的例子:
在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之外的参数,这似乎很脏。我显然可以观察到一个字段中的变化,并在另一个字段中反复销毁和重新创建验证器,但这似乎效率低下并且错综复杂。在这样的场景中是否有更好的约定?
答案 0 :(得分:0)
我发现了这个惯例(由于我对解决方案的假设,我找不到谷歌搜索它的方式)。您将两个字段放在FormGroup中并向该组添加验证器。