I need to check scroll event for a “show more” features.
Im using:
window.addEventListener('scroll', this.scroll, true);
and this code:
scroll = (event: any): void => { const number = event.srcElement.scrollTop; this.show_scroll_top = false; if (event.target.scrollTop >= 500) { this.show_scroll_top = true; } if (event.target.offsetHeight + event.target.scrollTop >= event.target.scrollHeight) { this.showMorFunctionFoo(); } };
Unfortunally the scroll listen to every scroll in page, for example a scroll inside a DropDown etc…
How can I listen ONLY the PAGE scroll ignoring everyelse?
Advertisement
Answer
One solution might be to use hostListener from Angular (https://angular.io/api/core/HostListener) in your page component
@HostListener('scroll', ['$event']) onScroll($event:Event):void { ... your logic here };
or you could use something like that
scroll = (event: any): void => { if (event.target.getAttribute('id') === YOU_PAGE_HTML_ID) { ... your logic here } };