2017-02-08 1 views
1

私はAngular2とdevextremeを使ってangular2を扱っています。私は、イベントハンドラがHTML要素に装着するために呼び出しを自分のサイト上の質問からいくつかの機能を追加しようとしていますDOMイベントを動的に結合するAngular2

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

明らかにこれは眉をひそめられるangular2にいるので、私はうまくしようとしていますそれを正しく行う方法。私は、次のことを試してみた:

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

これだけの原因となり、「未定義のプロパティを読み取ることができません 『のaddEventListener』」は、例外を

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をが正常に実行され、しかし、コールバック関数は決して実行されません。

jQueryコードを再現することは可能ですか?そうであれば、私は何を欠いていますか?

答えて

0

コンポーネント内のグローバルイベントに、次の構文でアタッチできます。サイズ変更イベント:

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

これはまた、「未定義の例外のaddEventListener 'プロパティを読み取ることができません。私はhtmlがHostListenerの有効なターゲットではないと思う – ciantrius

関連する問題