【发布时间】:2019-08-19 22:23:08
【问题描述】:
我有一个函数可以在滚动条移动时执行一些操作。我已经使用 id 将事件监听器添加到该文档中,但它给出了错误
ERROR TypeError: Cannot read property 'nativeElement' of undefined
ngOnInit() {
document.getElementById('sidenav').addEventListener('scroll',()=> this.onScroll('$event'),true);
// window.addEventListener('scroll',this.onScroll,true);
}
ngOnChanges(changes: SimpleChanges) {
this.data = changes.data.currentValue;
this.data_display = changes.data.currentValue.slice(0, 6);
}
ngOnDestroy() {
console.log('destroy')
document.getElementById('sidenav').removeEventListener('scroll',()=> this.onScroll('$event'),false);
// window.removeEventListener('scroll',this.onScroll,false)
}
// @HostListener('document:scroll', ['$event'])
onScroll(event): void {
const top = event.elementRef.nativeElement.scrollTop;
const total = event.elementRef.nativeElement.scrollHeight;
const height = event.elementRef.nativeElement.clientHeight;
if ((height + top) === total) {
if (this.data_display.length <= this.data.length) {
this.data_display.push(...this.data.slice(this.start, this.end));
this.start += 6;
this.end += 6;
}
console.log('yes')
this.cdr.detectChanges();
}
}
【问题讨论】:
-
我怀疑您在函数
this.onScroll中缺少this上下文。也许您需要做的就是将其更改为document.getElementById('sidenav').addEventListener('scroll', () => this.onScroll(),true);
标签: angular typescript