获取dom

依赖注入document对象

image.png

HostListener

指令中

  1. @Directive({selector: 'button[counting]'})
  2. class CountClicks {
  3. numberOfClicks = 0;
  4. @HostListener('click', ['$event.target'])
  5. onClick(btn) {
  6. console.log('button', btn, 'number of clicks:', this.numberOfClicks++);
  7. }
  8. }
  9. @Component({
  10. selector: 'app',
  11. template: '<button counting>Increment</button>',
  12. })
  13. class App {}

组件中

  1. import { HostListener, Component } from "@angular/core";
  2. @Component({
  3. selector: 'app',
  4. template: `<h1>Hello, you have pressed keys {{counter}} number of times!</h1> Press any key to
  5. increment the counter.
  6. <button (click)="resetCounter()">Reset Counter</button>`
  7. })
  8. class AppComponent {
  9. counter = 0;
  10. @HostListener('window:keydown', ['$event'])
  11. handleKeyDown(event: KeyboardEvent) {
  12. this.counter++;
  13. }
  14. resetCounter() {
  15. this.counter = 0;
  16. }
  17. }