Я строю расширение времени (часы / минуты / секунды) для углового материала DatePicker (потому что пока нет хороших). Проблема заключается в том, что когда я обновляю время в компоненте времени, я использую метод DatePickers select , который является единственным методом для установки даты программным образом с использованием объекта Date. Проблема заключается в том, что внутренняя функция выбора Datepickers не учитывает разные часы / минуты / секунды как разные даты, и при поставке с таким сценарием она не будет обновлять свою внутреннюю работу. Ниже приведена функция выбора Angle Material Datepicker:
MatDatepicker.prototype.select = function (date) {
var oldValue = this._selected;
this._selected = date;
// this will eveluate as false since only hours/minuts/seconds are different and not day/month/year
if (!this._dateAdapter.sameDate(oldValue, this._selected)) {
this._selectedChanged.next(date);
}
};
Внутри метода sameDate они используют метод с именем compareDate , который проверяет две даты только по дням. и месяц и год:
DateAdapter.prototype.compareDate = function (first, second) {
return this.getYear(first) - this.getYear(second) ||
this.getMonth(first) - this.getMonth(second) ||
this.getDate(first) - this.getDate(second);
};
Это означает, что метод select не будет выдавать новую дату внутренним компонентам и деталям DatePicker.
Я использую пользовательский NativeDateAdapter и пользовательский MatDateFormats , но, поскольку вышеупомянутая проверка хочет выдать новую дату, эти механизмы должны быть достигнуты.
PSВсе работает нормально, когда обновленная дата имеет другой день / год / месяц, включая пользовательское форматирование времени, включающее параметры времени.