2017-01-23 2 views
1

Я работал над пользовательской директивой (скроллер), которая обнаруживает конец прокрутки. Я хочу, чтобы испустить номер, как только конец прокрутки (т.е. достигается конец страницы)Как исходить из пользовательской директивы?

Пользовательских директивы:

import { HostListener , Directive, Output, EventEmitter} from '@angular/core'; 



@Directive({ 
    selector: '[scroller]' 
}) 


export class scrollDirectiveComponent{ 
    @HostListener('scroll', ['$event']) 

    @Output() emitPageNumber:EventEmitter<any> =new EventEmitter(); 
    pageNo:any=0; 
    onScroll(event) { 
    // do tracking 
    console.log('scrolled', event.target.scrollTop); 
    // Listen to click events in the component 
    let tracker = event.target; 

    let limit = tracker.scrollHeight - tracker.clientHeight; 
    console.log(event.target.scrollTop, limit); 
    if (event.target.scrollTop >= limit) { 
     console.log('end reached'); 
     this.pageNo++; 
     this.emitPageNumber.emit(this.pageNo); 
    } 
    } 
} 

Я обязана директива моего родительского шаблона

 <div class="alert-list" scroller (emitPageNumber)="fetchPageNumber($event)"> 

Но когда я прокручиваю, я получаю сообщение об ошибке как core.umd.js: 3462 ИСКЛЮЧЕНИЕ: Ошибка в http://localhost:3000/app/menu-board/menu.component.html:63:8 вызвана: self._scrollDirectiveComponent_32_3.emitPageNumber не является функцией

что я делаю неправильно?

ответ

2

Существует некоторый код отсутствует после @HostListener(...)

@HostListener('scroll', ['$event']) 
scrollHandler(event) { 
    ... 
} 
+1

Спасибо за ответ. Теперь я понял, что означает ошибка. мой обработчик прокрутки был onScroll(), и я переместил его ниже @Output(). – CruelEngine

Смежные вопросы