Я работал над похожей проблемой с другим датчиком, но решение также может работать здесь.
Я решил свою проблему, скрыв исходный ввод средства выбора даты и поместив отдельное поле ввода с привязкой ng-модели к то же значение объема. Затем я прикрепил к нему собственную директиву, которая реализовала парсер для пользовательского ввода, который понимал мой пользовательский формат. (См. ngModel. $ Parsers ):
<input ng-model="my.model" my-parser>
<my-datepicker-directive ng-model="my.model">
Директива была реализована следующим образом. Вам просто нужно реализовать свои собственные myParserFunction()
и myFormattingFunction()
(и myValidationFunction()
, если вы хотите проверить ввод):
angular.module('app')
.directive('myParser', function () {
return {
require: 'ngModel',
link: function (scope, element, attrs, ngModelController) {
/*
* Display -> Model
*/
ngModelController.$parsers.push(function (inputValue) {
if (!myValidationFunction(inputValue)) {
ngModelController.$setValidity('myParser', false);
return null;
}
ngModelController.$setValidity('myParser', true);
return myParserFunction(inputValue);
});
/*
* Model -> Display
*/
ngModelController.$formatters.push(function (modelValue) {
return myFormattingFunction(modelValue);
});
},
};
});