Angular2动态附加DOM事件

Angular2动态附加DOM事件,angular,typescript,dom-events,Angular,Typescript,Dom Events,我和Angular2一起工作,为Angular2工作。我试图从他们网站上的一个问题中添加一些功能,该问题要求将事件处理程序附加到html元素 $('html').on('dxclick', function(event) { console.log('DxClick - Clicked'); }); 很明显,在安格拉尔,这是不被接受的,所以我正在努力找出正确的方法。我尝试了以下方法: constructor(@Inject(EventManager) priva

我和Angular2一起工作,为Angular2工作。我试图从他们网站上的一个问题中添加一些功能,该问题要求将事件处理程序附加到html元素

    $('html').on('dxclick', function(event) {
        console.log('DxClick - Clicked');
    });
很明显,在安格拉尔,这是不被接受的,所以我正在努力找出正确的方法。我尝试了以下方法:

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代码,如果可以,我遗漏了什么。

您可以使用以下语法将其附加到组件中的全局事件,例如调整事件大小:

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

您可以使用以下语法(例如调整事件大小)附加到组件中的全局事件:

@HostListener('window:resize')
resizeWindow() {
    // window has been resized
}
这还会导致和“无法读取未定义的属性'addEventListener'的”异常。我认为html不是HostListener的有效目标,这也会导致“无法读取未定义属性'addEventListener'的”异常。我认为html不是HostListener的有效目标