2017-12-13 7 views
0

ユーザーがスクロールして特定の位置にスクロールすると、角度付きアニメーションを適用するHostListenerがあります。ユーザーがスクロールすると、HostListenerにアタッチされたメソッドが起動します。ユーザーがスクロールを停止すると、メソッドはconsole.log出力のように起動を停止します。 1608年のY値(window.pageYOffset)過去のユーザーがスクロール場合は、バック1608角度4のHostListenerのウィンドウ:ユーザーがスクロールを停止した後、スクロールが継続的に発生する

の上にユーザーがスクロールするまで継続的にHostListener火災に添付方法は、ここに私のコードです:

@HostListener('window:scroll', ['$event']) 
checkScroll(evt) 
{ 
    const scrollPosition = window.pageYOffset 

    if (scrollPosition >= 750) { 
     this.SiteNavigationState = 'dark' 
    } 
    else 
    { 
     this.SiteNavigationState = 'translucent' 
    } 

    console.log('checkScroll', scrollPosition); 
} 

なぜ方法はありません1608のwindow.pageYOffsetの後でもHostListenerにアタッチされますが、1608のwindow.pageYOffsetの上にスクロールすると、起動は停止しますか?

この問題はChromeでのみ発生します。 HostListenerに添付されたメソッドは、Firefoxで正常に動作します。

答えて

0

実際の問題が見つかりました。 matchHeightというディレクティブがあります。このディレクティブは、表示されるコンテンツの長さの違いを考慮に入れて、同じUIエレメントが同じ高さになっていることを確認する責任があります。 matchHeightは、変更検出ごとに実行されるngAfterViewCheckedを使用します。 matchHeightは、dom要素の高さを物理的に変更します。特定のY位置の後に要素の物理的な高さを変更すると、完全に異なる指令のHostListenerが無限に発火する理由は分かりません。

私は困惑しています。

関連する問題