Как о чем-то вроде этого:
(function() {
'use strict';
/**
* Setup a custom date formatter, I'm using moment for example
*/
angular
.module('awesomemodule')
.constant('DEFAULT_DATE_FORMAT', 'DD/MM/YYYY')
.config(['DEFAULT_DATE_FORMAT', '$mdDateLocaleProvider', dateConfig]);
function dateConfig (DEFAULT_DATE_FORMAT, $mdDateLocaleProvider) {
$mdDateLocaleProvider.formatDate = osDateFormatter;
function osDateFormatter(date) {
if (!date) {
date = new Date();
}
return moment(date).format(DEFAULT_DATE_FORMAT);
}
}
})()
(function() {
'use strict';
/**
* Decorate the mdDatepickerDirective to add ngMask
*/
angular
.module('awesomemodule')
.config(['$provide', checkForNgMask]);
function checkForNgMask ($provide) {
$provide.decorator('mdDatepickerDirective', function ($delegate) {
var directive = $delegate[0];
var template = directive.template;
directive.template = function (tElement, tAttrs) {
var originalTemplate = template.apply(this, arguments);
if (R.has('osMask', tAttrs)) {
var element = angular.element(originalTemplate);
element.find('input').attr('mask', tAttrs.osMask);
element.find('input').attr('ng-model', "ctrl.dateInput");//ng-model is required by ngMask
return R.map(R.prop('outerHTML'), R.values(element)).join("");
}
return originalTemplate;
};
return $delegate;
});
}
})();
И использовать директиву, как этот
<md-datepicker ng-model="myAwesomeModel" os-mask="3?9/19/9999"></md-datepicker>
мкр-DatePicker получает недействительный поэтому будет блокировать представить, если значение не подходит как действительная дата, однако принудительное применение маски с ней было бы хорошим, по крайней мере, на рабочем столе. вы можете заполнить отчет о проблеме на https://github.com/angular/material и представить им этот код: http://codepen.io/anon/pen/GNRWQd?editors=1000 К сожалению, похоже, нет простой интеграции – Sombriks
Спасибо @Sombriks за ответ. Я выполнил ваши инструкции и открыл вопрос. ** [Проблема № 9976] (https://github.com/angular/material/issues/9976) ** –