Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript console.log不';在文档滚动到达末尾时触发_Javascript_Angular_Infinite Scroll - Fatal编程技术网

Javascript console.log不';在文档滚动到达末尾时触发

Javascript console.log不';在文档滚动到达末尾时触发,javascript,angular,infinite-scroll,Javascript,Angular,Infinite Scroll,我有一个类似于Facebook的应用程序,其中填充了feed。我的上有一个滚动条,但是这些提要在一些嵌套的子组件中。我想实现一个无限滚动,而不使用任何库,比如ngx无限滚动等等。。。。 为了实现这一点,我在完整的文档中使用了@HostListener()。但是当文档滚动到达末尾时,不会触发console.log('End')。下面是我的实现。。。谁来帮我做这个 @ViewChild('feedSection') el: ElementRef; @HostListener('document:s

我有一个类似于Facebook的应用程序,其中填充了feed。我的
上有一个滚动条,但是这些提要在一些嵌套的子组件
中。我想实现一个无限滚动,而不使用任何库,比如
ngx无限滚动
等等。。。。
为了实现这一点,我在完整的文档中使用了
@HostListener()
。但是当文档滚动到达末尾时,不会触发console.log('End')。下面是我的实现。。。谁来帮我做这个

@ViewChild('feedSection') el: ElementRef;

@HostListener('document:scroll', ['$event'])
  onScroll(event: any) {
    const elm = this.el.nativeElement;
    if (elm.offsetHeight + elm.scrollTop >= elm.scrollHeight) {
      console.log('End');
    }
  }
我的<代码>应用程序提要
组件是

<app-home>
   <div #feedSection class="feed-container">
     ...
   </div>
</app-home>

...

您需要使用console.log()查找“offsetHeight”、“scrollHeight”属性的值。在我以前的一个项目中,我减去了偏移值‘20px’,以执行滚动结束条件。它可能因浏览器而异

所以我得到了这个问题的答案。当然,在没有任何库的情况下解决它。 元素本身滚动,而不是整个窗口。在这种情况下,由于整个窗口是滚动的,我需要另一种方法:

@HostListener('document:scroll', ['$event'])
    onScroll(event: any) {
    const boundingBox = document.documentElement.getBoundingClientRect();
    if (boundingBox.height - window.scrollY === window.innerHeight) {
      console.log('End');
    }
  }

PS-Gitter上的一个家伙(@alpox)向我推荐了这种方法,效果很好。所以我在这里发布它,以防其他人在Angular中寻找类似的功能。

是否调用onScroll?是的,正在调用它,但问题是如果条件确定。。。我不知道如何访问
elm.
以检测页面是否到达尾端。您可以创建一个StackBlitz来重现问题吗?@user184994这里我创建了StackBlitz