amDateFormat забивает amTimezone в AngularJS
Мой код выглядит следующим образом с установленным пакетом угловых моментов:
<td data-ng-bind="'2019-02-04T13:42:06.927+00:00' | amTimezone:'America/Halifax' | amDateFormat: 'MM/DD/YYYY hh:mm A'"></td>
Этот код выводит: "04.02.2009, 13:42"
Когда я запускаю приведенный выше код без фильтра amDateFormat, я получаю: "Пн Фев 04 2019 09:42:06 GMT-0400"
Итак, я знаю, что каждый фильтр работает, но после некоторой отладки файла angular-moment.js preprocessDate назовет его тем, что забивает информацию о моем часовом поясе.
.filter('amDateFormat', ['moment', 'amMoment', 'angularMomentConfig', function (moment, amMoment, angularMomentConfig) {
function amDateFormatFilter(value, format) {
if (isUndefinedOrNull(value)) {
return '';
}
var date = amMoment.preprocessDate(value);
if (!date.isValid()) {
return '';
}
return date.format(format);
}
amDateFormatFilter.$stateful = angularMomentConfig.statefulFilters;
return amDateFormatFilter;
}])
У меня preprocess установлен в null в моем angularMomentConfig моего файла angular-moment.js, но он выполняет createUTC() из moment.js в качестве функции препроцессора.
Я понятия не имею, как вызывается эта функция или именно это вызывает мою проблему, но любая помощь будет принята с благодарностью.
1 ответ
Я понял. Мы установили препроцессор в основной модуль, на который я не смотрел.
.constant('angularMomentConfig', {
preprocess: moment.utc
})
Удаление этого позволило ему работать правильно.