ag-grid 有自己的滚动事件,所以引入其中的单元格组件的下拉滚动有的会不好使,具体原因因项目需求原因未能及时探究从根本上解决,故代码层面处理一下。等后续再继续讨论
// 宿主事件--监听滚轮 @HostListener('mousewheel', ['$event']) _mousewheel($event) { if (this.openScroll) { // 手动设置界面滚动 const scrollN = $event.wheelDelta; const div = document.getElementsByClassName('combotree-container')[0]; if (div) { if (scrollN > 0 && div.scrollTop > 0) { // 向上 div.scrollTop = div.scrollTop - scrollN > 0 ? div.scrollTop - scrollN : 0; } else if (scrollN < 0 && div.scrollTop < div.scrollHeight) { // 向下 div.scrollTop = div.scrollTop - scrollN > div.scrollHeight ? div.scrollHeight : div.scrollTop - scrollN; } } } }
不过这样滚动不够丝滑,调整一下,平滑滚动
// 宿主事件--监听滚轮 @HostListener('mousewheel', ['$event']) _mousewheel($event) { if (this.openScroll) { // 手动设置界面滚动 const scrollN = $event.wheelDelta; const div = document.getElementsByClassName('combotree-container')[0]; if (div) { let value = div.scrollTop; if (scrollN > 0 && div.scrollTop > 0) { // 向上 value = div.scrollTop - scrollN > 0 ? div.scrollTop - scrollN : 0; } else if (scrollN < 0 && div.scrollTop < div.scrollHeight) { // 向下 value = div.scrollTop - scrollN > div.scrollHeight ? div.scrollHeight : div.scrollTop - scrollN; } div.scrollTo({ top: value, behavior: 'smooth' }); } } }