2016-05-25 2 views
0

У меня есть поле ввода с настраиваемым валидатором и ng-сообщениями для отображения сообщений проверки.Могу ли я активировать проверку ngMessages вручную?

<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 умирает для этого входа и для ввода телефонного номера, а также и вид обновляется, но уже поздно, как если бы это пропустить один цикл для уточнения вида

+0

Как запущено 'countrychange' событие? –

+0

@joelkornbluh плагин jquery intlTelInput запускает его https://github.com/jackocnr/intl-tel-input#events –

ответ

1

Поскольку событие countrychange не запускается угловым (т.е. вне цикла дайджест), вам необходимо обернуть звонок проверки в пределах $scope.$apply.

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

См this discussion для объяснения

+0

Спасибо, это помогло и исправило мою проблему;) –

Смежные вопросы