angular - 捕获 Angular2 中的所有可点击元素?

标签 angular

我想向所有定义了 (click) 处理程序(或绑定(bind)到点击事件)的元素添加一个 cursor:pointer CSS 样式。 我相信在 AngularJS 上可以使用 [ng-click] { ... } 定义 css,Angular2/4 是否有类似的解决方法?

最佳答案

1) 如果您想向所有具有 (click) 处理程序的元素添加一些行为,您可以创建如下指令:

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

Plunker Example

2) 要捕获所有具有 click 处理程序的元素,我将覆盖 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);
  }
}

app.module.ts

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

Plunker Example

关于angular - 捕获 Angular2 中的所有可点击元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43480122/

相关文章:

javascript - 在 Angular 8 项目中导入 leaftlet-control-geocoder?

html - 通过 ngModel Binding 设置值时如何在文本区域上触发更改事件

json - Angular 4 显示来自 HTTP Get 请求的 JSON 数据

angular - createUrlTree 忽略 "useHash: true"RouterModule 配置

Web 服务器上 Assets 中图像的 Angular 路径

angular - 带有 Angular2+ 的 dc.js 图表

Angular :TypeError:无法读取 null 的属性 'firstCreatePass'

angular cli 必须使用 import 来加载 ES 模块

angular - 在 Angular 2 中,是否可以淡入/淡出而不是 [hidden='xxx]?

angularjs - 通过服务进行 Angular 2 组件交互