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);
});
}
Sie wollen Ereignis auszusenden einmal in 3 Sekunden? –