今天遇到一个问题,nz-zorro组件库的日期组件nz-range-picker,点击清除日期按钮时,无法触发nzOnCalendarChange回调函数,导致无法重新加载数据,如何解决这一问题呢?
我们可以通过ViewChild获取nz-range-picker的实例,然后访问其内部的datePicker属性,重写其onClickClear方法即可。
<nz-range-picker #rangePicker (nzOnCalendarChange)="changeDateRange($event)"></nz-range-picker>
import { Component, ElementRef, ViewChild } from '@angular/core';
import { NzRangePickerComponent } from 'ng-zorro-antd/date-picker';
...
@ViewChild(NzRangePickerComponent) rangePicker: NzRangePickerComponent;
...
ngAfterViewInit() {
// 备选方案:直接监听清除按钮(可选)
const originalOnClickClear = this.rangePicker.datePicker.onClickClear;
this.rangePicker.datePicker.onClickClear = (e)=>{
console.log('点击清除日期按钮>>>>');
originalOnClickClear.call(this.rangePicker.datePicker,e);//调用之前的清除逻辑
this.search.start_datetime = '';
this.search.end_datetime = '';
this.doSearch();
}
}
这里需要注意的是,之前的onClickClear动作还得调用一下,可以用call函数。