0%

ngx-datatable组件table重新计算,手动触发resize事件

最近写Angular项目用到@swimlane/ngx-datatable组件,其中table有一个recalculate()方法,可以重新计算网格大小。由于左侧边栏可以伸缩导致table没有重新计算,看了下ngx-datatable的实现源码,原来是这样的:

1
/**
2
* Window resize handler to update sizes.
3
 */
4
@HostListener('window:resize')
5
@throttleable(5)
6
onWindowResize(): void {
7
  this.recalculate();
8
}

只有触发window的resize事件才能重新计算,故想到一个方法:手动触发一个resize事件加入异步队列得以解决。

1
// 1. 得到组件
2
@ViewChild('datatable') datatable;
3
// 2. 触发方法
4
const e = document.createEvent('Event');
5
e.initEvent('resize', true, true);
6
window.dispatchEvent(e);
7
this.datatable.recalculate();