Angular 2アプリでスクロールするdivからオーバーフローイベントを取得する必要があります。
onscroll event はAngular 2では機能しないようです。
どうすればそれを達成できますか?
// @HostListener('scroll', ['$event']) // for scroll events of the current element
@HostListener('window:scroll', ['$event']) // for window scroll events
onScroll(event) {
...
}
または
<div (scroll)="onScroll($event)"
angular 4の場合、作業ソリューションはコンポーネント内で行うことでした
@HostListener('window:scroll', ['$event']) onScrollEvent($event){
console.log($event);
console.log("scrolling");
}
@HostListenerデコレータを使用できます。 Angular 4以降で動作します。
import { HostListener } from '@angular/core';
@HostListener("window:scroll", []) onWindowScroll() {
// do some stuff here when the window is scrolled
const verticalOffset = window.pageYOffset
|| document.documentElement.scrollTop
|| document.body.scrollTop || 0;
}
ウィンドウ/ドキュメントレベルのスクロールのwindow:scroll
イベントと、エレメントレベルのスクロールの要素のscroll
イベントをリッスンします。
@HostListener('window:scroll', ['$event'])
onWindowScroll($event) {
}
または
<div (window:scroll)="onWindowScroll($event)">
@HostListener('scroll', ['$event'])
onElementScroll($event) {
}
または
<div (scroll)="onElementScroll($event)">
Host要素自体がスクロール可能でない場合、@HostListener('scroll', ['$event'])
は機能しません。