onScroll事件触发Angular4中的函数

时间:2017-08-31 09:24:23

标签: html angular typescript event-handling onscroll

我正在尝试显示分页列表,因此,当用户向下滚动时,我想触发一个加载更多项目的函数。但是我无法在“滚动”字样中调用该功能。事件

这就是我的HTML文档的样子:

   <div id="notifications-list"  (scroll)="scrollHandler($event)"  >
       <div class="row notification-row" *ngFor = "let notification of notifications" > 
                ...
       </div>
    </div>

在我的.ts文件中,我有以下内容:

      import { Component, OnInit, ViewChild, ViewEncapsulation, AfterViewChecked, ElementRef,  HostListener  } from '@angular/core';
        @Component({
            selector: 'header-component',
            templateUrl: 'header.component.html',
            styleUrls: ['header.component.css'],
            encapsulation: ViewEncapsulation.None,

        })

        export class HeaderComponent implements OnInit {
         constructor( ...){}


  scrollHandler(event){
    console.log(event);
    console.log('now you are scrolling');
  }

但它不会以这种方式工作。我的控制台中没有显示任何内容。 我尝试了许多其他方式,例如使用@HostListener,但它确实无效:

@HostListener('window:scroll', ['$event']) 
    dotheJob(event) {
      console.debug("Scroll Event", window.pageYOffset );
    }

你能帮我解决这个问题吗?谢谢! :)

1 个答案:

答案 0 :(得分:9)

使用@ HostListner时,您已经给出了不同的函数名称。将代码修改为

<div id="notifications-list"  (scroll)="scrollHandler($event)"  >
       <div class="row notification-row" *ngFor = "let notification of notifications" > 
                ...
       </div>
    </div>

和模板

@HostListener('scroll', ['$event']) 
        scrollHandler(event) {
          console.debug("Scroll Event");
        }

请检查插件here。希望它有所帮助。

以上代码将在滚动页面时滚动功能以及div滚动。如果您只想要div滚动事件,请使用以下代码

private static Object[] f () 
{ 
     double x =1.0;  
     int y= 2 ;
     return new Object[]{Double.valueOf(x),Integer.valueOf(y)};  
}

仅在滚动div时触发此操作。找到plunk here