В самом примитивном угловом приложении я пытаюсь создать директиву для поля ввода, которое изменяет значение родительской ng-модели.
HTML:
<form novalidate>
<input ng-model="ctrl.myvalue" mydirective minlength="19" />
{{ ctrl.myvalue }}
</form>
JS:
var app = angular.module('app', []);
app.directive('mydirective', function(){
return {
scope: { ngModel: '=' },
link: function(scope, el) {
el.on('input', function(e) {
this.value = this.value.replace(/ /g,'');
scope.ngModel = this.value;
})
}
}
})
app.controller('MyController', function(){
this.myvalue = '';
})
Проблема в том, что если я использую эту директиву вместе с minlength
или pattern
для проверки ввода, она получает определенное поведение: каждая вторая буква, которую вы вводите во вводе, исчезает; также ng-model
получает значение undefined
. Без валидации код работает отлично.
Я также пытался создать пользовательскую проверку в качестве обходного пути, но она имеет тот же эффект.
Не могли бы вы объяснить это или предложить путь?