Это зависит от того, куда вы хотите добавить слушателя (в конкретный компонент c, в документ, в тело и т. Д. c). Серебряная пуля - использовать обычный прослушиватель событий. В качестве примера послушаем события прокрутки документа. Вы можете ввести document
в конструктор (на всякий случай, если вы захотите использовать что-то вроде SSR в будущем):
Stackblitz demo
constructor(@Inject(DOCUMENT) private _document: Document) {
this._document.addEventListener('scroll', this.onContentScrolled);
}
ngOnDestroy() {
this._document.removeEventListener('scroll', this.onContentScrolled);
}
onContentScrolled(e) {
let scroll = window.pageYOffset;
if (scroll > this.currentPosition) {
console.log('scrollDown');
} else {
console.log('scrollUp');
}
this.currentPosition = scroll;
}
If вы хотите сделать то же самое с полосой прокрутки, содержащейся в компоненте, вы можете использовать @HostListener('scroll')
для украшения метода прослушивателя внутри компонента, который вы хотите прослушивать для событий прокрутки.
Stackblitz demo
@HostListener("scroll", ['$event.target'])
onContentScrolled(e: HTMLElement) {
let scroll = e.scrollTop;
if (scroll > this.currentPosition) {
console.log("scrollDown");
} else {
console.log("scrollUp");
}
this.currentPosition = scroll;
}