Angular2动态附加DOM事件

时间:2017-02-08 10:22:39

标签: angular typescript dom-events

我正在使用Angular2和devextreme for angular2。我试图在他们的网站上添加一些问题的功能,这些功能要求将事件处理程序附加到html元素

    $('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代码,如果是这样,我错过了什么。

1 个答案:

答案 0 :(得分:0)

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

 L1 = [[x.split(' A ')[-1].split(' B ')[-1]] for x in L]