2017-10-17 121 views
-1

我在Angular組件的模板中有一個div。在div上,我試圖獲得div的滾動位置。滾動事件不在元素div上觸發

<div class="data-input" (scroll)="onScroll($event)">Accepted Qty....</div> 

html元素看起來像這樣。

在TS文件

我有一個函數

onScroll(event) { 
    console.log(event); 
} 

,但此功能未擊中。

我已經嘗試過

@HostListener('scroll', ['$event']) 
onScroll(event) { ...} 

但這個工程時,頁面滾動。我想在HTML元素(div)滾動時觸發滾動事件。

+0

可能是https://stackoverflow.com/questions/44516017/how-to-handle-window-scroll-event-in-的副本angular-4 – izulito

+0

但我不想讓窗口滾動。我正在嘗試獲取元素滾動。 –

+0

您正在使用哪種瀏覽器?你在其他瀏覽器中看到了這個問題嗎? – ConnorsFan

回答

0

您可以嘗試通過ElementRefRenderer。我起草了獨立滾動組件,爲您展示的概念:

import {Component, OnInit, OnDestroy} from '@angular/core'; 
import {ElementRef, Renderer2} from '@angular/core'; 

@Component({ 
    selector: 'my-scroll', 
    template: '<div>Accepted Qty....</div>' 
}) 

export class MyScrollComponent implements OnInit, OnDestroy { 

    onScrollListener: Function; 

    constructor(private elementRef: ElementRef, private renderer: Renderer2) { 
    } 

    ngOnInit() { 
    this.onScrollListener = 
     this.renderer.listen(this.elementRef.nativeElement, 'scroll', this.onScroll); 
    } 

    ngOnDestroy() { 
    this.onScrollListener(); 
    } 

    onScroll(event) { 
    console.log(event); 
    } 
} 
+0

我的情況下div元素是在其他元素內。 –

+0

我認爲沒有問題以'你好世界'的方式使用它。你也可以從MyScroll組件創建一個包裝器來提供獨立的內容,比如:' world!'。第二種方法需要一些額外的代碼。你也可以構建一個指令......這只是一個概念,無論如何,在我的項目中,我傾向於使用'Renderer.lesten'而不是'HostListener'。 – dhilt

相關問題