捕捉Angular2中所有可点击的元素?

捕捉Angular2中所有可点击的元素?,angular,Angular,我想向定义了(单击)处理程序(或绑定到单击事件)的所有元素添加光标:指针css样式。 我相信在AngularJS上,可以使用[ng click]{…}定义css,Angular2/4是否有类似的解决方法?如果我理解正确,向元素添加[style.cursor]=“'pointer'”,应该可以做到这一点 但最好添加一个“clickable”类,并在样式表中定义以下内容: 。可点击{ 光标:指针; } 据我所知,Angular在添加(单击)1)时不会向元素的HTML中添加任何内容。如果要向所有具有(

我想向定义了
(单击)
处理程序(或绑定到单击事件)的所有元素添加
光标:指针
css样式。

我相信在AngularJS上,可以使用
[ng click]{…}
定义css,Angular2/4是否有类似的解决方法?

如果我理解正确,向元素添加
[style.cursor]=“'pointer'”
,应该可以做到这一点

但最好添加一个“clickable”类,并在样式表中定义以下内容:

。可点击{
光标:指针;
}

据我所知,Angular在添加
(单击)

1)时不会向元素的HTML中添加任何内容。如果要向所有具有
(单击)
处理程序的元素添加某些行为,可以创建如下指令:

@Directive({
  selector: '[click]',
  host: {
    'style': 'cursor: pointer' // or class
  }
})
export class ClickableDirective {}

2)要捕获所有具有
单击
处理程序的元素,我将覆盖
EventManager

import { Injectable, Inject, NgZone }      from '@angular/core';
import { EventManager, EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';

@Injectable()
export class MyEventManager extends EventManager {
  constructor(@Inject(EVENT_MANAGER_PLUGINS) plugins: any[], private zone: NgZone) {
    super(plugins, zone);
  }

  addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {
    if(eventName === 'click') {
      element.style.cursor = 'pointer'; // or add class
    }

    return super.addEventListener(element, eventName, handler);
  }
}
应用程序模块.ts

  ...
  providers: [
    { provide: EventManager, useClass: MyEventManager }
  ]
})
export class AppModule {

有一个简单的方法可以找到:添加
(单击)
处理程序,检查呈现的元素,看看HTML上是否有任何独特的属性。我认为这没有帮助,我只是检查我的angular2应用程序,并且(单击)没有出现在DOM中。因此,你不能只使用简单的css。是的,clickable类是显而易见的方法。但我一直在寻找一种方法,在不重构项目的情况下捕获所有(当前)可单击的元素。当处理程序添加到
click
事件时,设置样式
cursor:pointer
没有任何问题。