最近我遇到一个问题,即有角度的子组件通过侦听ngonChanges从父组件接收数据,并通过更改内容设置容器的scrollTop。但是作业需要等到页面渲染完成后才能计算正确的高度。我使用setTimeout包装分配以延迟计算。但是有时候,在我分配之前,scrollTop的值会自动变为最大滚动距离。我不知道为什么有人遇到过这个问题吗?
clearTimeout(this.timeout);
this.timeout = setTimeout(() => {
this.containerHeight = this.Container.nativeElement.clientHeight;
this.boxHeight = this.box.nativeElement.clientHeight;
this.scrollMax = this.boxHeight - this.containerHeight;
this.tempDom = this.el.nativeElement.querySelector('.item'+ idarray[0]);
if (this.tempDom) {
console.log(this.scrollTop);
this.scrollTop = this.tempDom.offsetTop <= this.scrollMax ? this.tempDom.offsetTop: this.scrollMax;
}
}, 0);
有时是
console.log(this.scrollTop)
结果将变为
this.scrollMax
但是没有其他地方可以更改this.scrollTop的值和this.tempDom.offsetTop <= this.scrollMax之前始终为真。