有没有办法知道mat-datepicker弹出窗口因为单击了日期而关闭



我想在 mat-datepicker 弹出窗口关闭时执行一些操作,但前提是用户单击日期(如果弹出窗口通过转义键或背景单击关闭,则不应触发操作(。

我知道有一个@Output('closed') closedStream: EventEmitter<void>但每次弹出窗口关闭时都会触发。 我的想法是检测打开和关闭的事件之间是否存在日期更改事件,但如果用户单击已选择的日期,则不起作用。

我试图使用自定义 DateAdapter 解决此问题(覆盖sameDatecompareDate返回所选日期始终与当前所选日期不同的方法(,但似乎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();
}

不确定这本身是否是一个错误...

有没有人知道一种更简单的方法来知道材料日期选择器弹出窗口是否由于日期选择而关闭?我错过了一些明显的东西吗?

谢谢!

我认为,如果您想知道某些更改是使用 [ngModel] + (ngModelChange( 还是 formControl

<input matInput [ngModel]="date" (ngModelChange)="change($event)"
[matDatepicker]="picker" placeholder="Choose a date">
//in .ts
date:any;
change(date:any)
{
this.date=date;
console.log("change")
}

<input matInput [formControl]="formControl" [matDatepicker]="picker2" 
placeholder="Choose a date">
//in .ts
formControl:FormControl=new FormControl()
ngOnInit()
{
this.formControl.valueChanges.subscribe(res=>{
console.log("change formControl")
})
}

查看简单的堆叠闪电战

相关内容

最新更新