我可以手动触发ngMessages验证吗?

时间:2016-05-25 12:04:44

标签: javascript angularjs ng-messages

我有一个带有自定义验证器和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不会反映,验证消息不会更新某些为什么:/

有什么想法吗?

编辑当我在ngMessages中输入下一个输入时输入该输入和输入电话号码并且视图会更新,但是它已经很晚了,就好像它一样会省略一个周期来更新视图

1 个答案:

答案 0 :(得分:1)

由于countrychange事件不是由角度触发的(即在摘要周期之外),您需要将验证调用包装在$scope.$apply内。

iElem.on('countrychange', () => {
  $scope.$apply(function(){
    ngModel.$validate();
  })
});

请参阅this discussion了解