Могу ли я запустить проверку ngMessages вручную?
У меня есть поле ввода с пользовательским валидатором и сообщениями ng для отображения сообщений валидации.
<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 ответ
Так как countrychange
событие не вызывается угловым (т. е. вне цикла дайджеста), вам нужно обернуть вызов проверки внутри $scope.$apply
,
iElem.on('countrychange', () => {
$scope.$apply(function(){
ngModel.$validate();
})
});
Смотрите это обсуждение для объяснения