填写这份《一分钟调查》,帮我们(开发组)做得更好!去填写Home

HostListener

Decorator that declares a DOM event to listen for, and provides a handler method to run when that event occurs.

选项说明
eventName

要监听的事件。

The DOM event to listen for.

args

当该事件发生时传给处理器方法的一组参数。

A set of arguments to pass to the handler method when the event occurs.

选项

要监听的事件。

The DOM event to listen for.

eventName: string
      
      eventName: string
    

当该事件发生时传给处理器方法的一组参数。

A set of arguments to pass to the handler method when the event occurs.

args: string[]
      
      args: string[]
    

使用说明

下面的例子声明了一个指令,它会为按钮附加一个 click 监听器,并统计点击次数。

The following example declares a directive that attaches a click listener to a button and counts clicks.

@Directive({selector: 'button[counting]'}) class CountClicks { numberOfClicks = 0; @HostListener('click', ['$event.target']) onClick(btn) { console.log('button', btn, 'number of clicks:', this.numberOfClicks++); } } @Component({ selector: 'app', template: '<button counting>Increment</button>', }) class App {}
      
      @Directive({selector: 'button[counting]'})
class CountClicks {
  numberOfClicks = 0;

  @HostListener('click', ['$event.target'])
  onClick(btn) {
    console.log('button', btn, 'number of clicks:', this.numberOfClicks++);
 }
}

@Component({
  selector: 'app',
  template: '<button counting>Increment</button>',
})
class App {}
    

The following example registers another DOM event handler that listens for key-press events.

import { HostListener, Component } from "@angular/core"; @Component({ selector: 'app', template: `<h1>Hello, you have pressed keys {{counter}} number of times!</h1> Press any key to increment the counter. <button (click)="resetCounter()">Reset Counter</button>` }) class AppComponent { counter = 0; @HostListener('window:keydown', ['$event']) handleKeyDown(event: KeyboardEvent) { this.counter++; } resetCounter() { this.counter = 0; } }
      
      import { HostListener, Component } from "@angular/core";

@Component({
  selector: 'app',
  template: `<h1>Hello, you have pressed keys {{counter}} number of times!</h1> Press any key to
increment the counter.
  <button (click)="resetCounter()">Reset Counter</button>`
})
class AppComponent {
  counter = 0;
  @HostListener('window:keydown', ['$event'])
  handleKeyDown(event: KeyboardEvent) {
    this.counter++;
  }
  resetCounter() {
    this.counter = 0;
  }
}