Я хотел бы выполнить некоторые действия, когда всплывающее окно mat-datepicker закрывается, но только если пользователь щелкнул дату (действие не должно запускаться, если всплывающее окно было закрыто клавишей escape или нажатием на фон).
Я знаю, что есть @Output('closed') closedStream: EventEmitter<void>
, но он срабатывает каждый раз, когда закрывается всплывающее окно. Моя идея заключалась в том, чтобы определить, есть ли событие dateChange между открытыми и закрытыми событиями, но это не работает, если пользователь нажимает на уже выбранную дату.
Я попытался исправить это с помощью настраиваемого DateAdapter (переопределение метода sameDate
или compareDate
для возврата выбранной даты всегда отличается от выбранной в данный момент), но кажется, что компонент mat-month-view
не использует DateAdapter для сравнения дат перед изменением выбора:
_dateSelected(date: number) {
if (this._selectedDate != date) {
const selectedYear = this._dateAdapter.getYear(this.activeDate);
const selectedMonth = this._dateAdapter.getMonth(this.activeDate);
const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);
this.selectedChange.emit(selectedDate);
}
this._userSelection.emit();
}
Не уверен, что это само по себе ошибка или нет ...
Кто-нибудь знает более простой способ узнать, было ли закрыто всплывающее окно выбора даты материала из-за выбора даты? Я упустил что-то очевидное?
Спасибо!