我想在 mat-datepicker 弹出窗口关闭时执行一些操作,但前提是用户单击日期(如果弹出窗口通过转义键或背景点击关闭,则不应触发操作)。
我知道有一个@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();
}
不确定这本身是否是一个错误......
有谁知道更简单的方法来了解材料日期选择器弹出窗口是否由于日期选择而关闭?我错过了一些明显的东西吗?
谢谢!