捕捉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
没有任何问题。