Angular 4 HostListener & HostBinding
1713 ワード
HostListenerは、ホスト要素のイベントリスニングを追加するためのプロパティ・アクセラレータです.
さらに、windowオブジェクトやdocumentオブジェクトなど、ホスト要素以外のオブジェクトで発生するイベントをリスニングすることもできます.具体例は次のとおりです.
import { Directive, HostListener } from '@angular/core';
@Directive({
selector: 'button[counting]'
})
class CountClicks {
numberOfClicks = 0; @HostListener('click', ['$event.target'])
onClick(btn: HTMLElement) { console.log('button', btn, 'number of clicks:', this.numberOfClicks++);
}
}
import { Component} from '@angular/core';
@Component({
selector: 'exe-app',
styles: [`
button {
background: blue;
color: white;
border: 1px solid #eee;
}
`],
template: `
` }) export class AppComponent {}
さらに、windowオブジェクトやdocumentオブジェクトなど、ホスト要素以外のオブジェクトで発生するイベントをリスニングすることもできます.具体例は次のとおりです.
import { Directive, HostListener, ElementRef, Renderer } from '@angular/core';
@Directive({
selector: '[exeHighlight]'
})
export class ExeHighlight { constructor(private el: ElementRef, private renderer: Renderer) { } @HostListener('document:click', ['$event'])
onClick(btn: Event) { if (this.el.nativeElement.contains(event.target)) { this.highlight('yellow');
} else { this.highlight(null);
}
}
highlight(color: string) { this.renderer.setElementStyle(this.el.nativeElement, 'backgroundColor', color);
}
}
import { Component} from '@angular/core'; @Component({
selector: 'exe-app',
template: `
この をクリックすると、 がハイライトされます。 の をクリックすると、 がハイライトされなくなります
` }) export class AppComponent {}