我有一个包含两个字段的表单:validFrom和validUntil。 ValidUntil有一个自定义验证器,如果该值在validFrom中的值之前,则该字段将无效。只要我正在编辑它的validUntil就可以正常工作。但是,当表单处于无效状态,并且我将validFrom值编辑为更早的时候,我希望表单可以验证,但事实并非如此。如何触发重新验证?
我尝试了vm.form.validUntil.$validate()
,这似乎做了一些事情,但只是在我第二次更新validFrom值之后。
有什么想法吗?
答案 0 :(得分:2)
添加$timeout
就可以了。问题是在验证器中,它依赖于范围变量,该范围变量尚未使用刚输入的值进行更新。我不确定这是否是最佳解决方案,如果其他人有更好的解决方案,我很乐意听到它。
vm.promotion[key] = value;
$timeout(function() { // this was added
if (key === 'validFrom') {
vm.form.validUntil.$validate();
}
if (vm.form.$valid) {
PromotionManager.update(vm.promotion);
}
});