2017-01-24 1 views
0

Gibt es sowieso in Intervallen benutzerdefinierte Ereignisse in Winkel 2 zu hören? wie einmal in 3 Sekunden?Hostlistener warten

Das Scroll-Ereignis wird weiterhin abgehört und die Seitennummer wird automatisch inkrementiert. Wenn man nicht warten kann, gibt es dann sowieso einen Weg, auf dem die Bildlaufleiste in eine neue Position gebracht werden kann?

+0

Sie wollen Ereignis auszusenden einmal in 3 Sekunden? –

Antwort

1

Sobald ich verstanden habe, dann können Sie dies tun, auf jedem Scroll-Ereignis, das Sie zu beobachtbaren und beobachtbaren throttleTime (3000) emittieren bedeutet, dass nur ein Ereignis durchlaufen wird.

export class scrollDirectiveComponent { 
    pageNumber: any = 1; 
    private scrollEvents = new Subject(); 
    constructor() { 
    scrollEvents 
     .throttleTime(3000) 
     .subscribe(() => { 
     this.emitPageNumber.emit(++this.pageNumber); 
     }); 
    } 

    @Input() pageNumber: any; 
    @Output() emitPageNumber: EventEmitter<any> = new EventEmitter(); 
    @HostListener('scroll', ['$event']) 
    onScroll(event) { 
    console.log('scrolled', event.target.scrollTop); 
    let tracker = event.target; 
    let limit = tracker.scrollHeight - tracker.clientHeight - 5; 
    console.log(event.target.scrollTop, limit); 
    if (event.target.scrollTop > limit) { 
     this.scrollEvents.next(true); 
    } 
    } 
} 

Andere Option wäre in etwa so aussehen, aber ich bin nicht sicher, was Sie brauchen, um zu versuchen, da ich nie Richtlinie getan haben

constructor(private _el: ElementRef){ 
    Observable.fromEvent(_el, 'resize') 
    .throttleTime(3000) 
    .subscribe(() => { 
     this.emitPageNumber.emit(++this.pageNumber); 
    }); 
} 
Verwandte Themen