2017-02-08 71 views
1

我正在使用Angular2和angular2的devextreme。我試圖從他們的網站上的一個問題,其要求的事件處理程序附加到html元素添加一些功能Angular2動態附加DOM事件

$('html').on('dxclick', function(event) { 
     console.log('DxClick - Clicked'); 
    }); 

在angular2這會讓人不悅顯然是,所以我試圖找出如何正確地做到這一點。我嘗試了以下內容:異常

public ngAfterViewInit() { 
    let htmlElement: any = this.elementRef.nativeElement; 
    while (htmlElement && htmlElement.localName !== 'html') { 
     htmlElement = htmlElement.parentNode; 
    } 

    if (htmlElement) { 
     this.eventManager.addEventListener(htmlElement, 'dxclick', function (event: any) { 
      console.log('DxClick Clicked'); 
     }); 
    } 
} 

這個代碼是找到html元素和成功執行的addEventListener

constructor(@Inject(EventManager) private eventManager: EventManager) { 
    this.eventManager.addGlobalEventListener('html', 'dxclick', function(event: any) { 
     console.log('DxClick Clicked'); 
    }); 
} 

這只是原因和「未定義無法讀取屬性‘的addEventListener’」,然而回調函數從不執行。

是否有可能重現jQuery代碼,如果有的話,我錯過了什麼。

回答

0

您可以使用以下語法附加到組件中的全局事件,例如:調整事件大小:

@HostListener('window:resize') 
resizeWindow() { 
    // window has been resized 
} 
+0

這也會導致和「無法讀取屬性'addEventListener'未定義的」異常。我認爲html不是HostListener的有效目標 – ciantrius