我有一个带有自定义验证器和 ng-messages 的输入字段来显示验证消息。
<input type="tel"
ng-model="ctrl.phoneNumber"
phone-number
required />
自定义验证器很简单:
ngModel.$validators.phoneNumber = () => {
return $iElem.intlTelInput('isValidNumber');
};
对于其他一些事件,我想手动触发验证,也很简单
$iElem.on('countrychange', () => {
ngModel.$validate();
});
这将触发我的自定义验证器,并且这将再次验证数字,form.*.$error
对象也会更新,但 ngMessages 不会反射(reflect),验证消息不会'不知何故更新:/
有什么想法吗?
编辑:当我在 ngMessages 行中进行下一个输入时,该输入和电话号码输入也会启动, View 也会更新,但已经晚了,就像如果它一样将省略一个周期来更新 View
最佳答案
由于 countrychange
事件不是由 Angular 触发的(即在摘要周期之外),因此您需要将验证调用包装在 $scope.$apply
内。
iElem.on('countrychange', () => {
$scope.$apply(function(){
ngModel.$validate();
})
});
参见this discussion解释一下
关于javascript - 我可以手动触发 ngMessages 验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37436575/