@HostBinder and @HostListner Example in angular 2|4|5|6|7
@Hostbinder and @Hostlistner are used to define custom directives using @Hostbinding and javascript events using @HostListner. So let me demonstrate it with an simple example.
Step1: Create new custom directive by following terminal command
ng g d mydirective
Step2. Add Following code into newly created directive
import { Directive, ElementRef, Renderer ,HostBinding, HostListener } from '@angular/core';
@Directive({
selector: '[appMydirective]'
})
export class MydirectiveDirective {
// First Way to set background color and default value which is red in this case
@HostBinding('style.backgroundColor') backcolorColor: string = 'red';
constructor(private el: ElementRef, private renderer: Renderer) {
// Second way to change stye of host element
this.ChangeBgColor('aqua');
}
// Register click event on hostelement
@HostListener('click') addcolor() {
this.backcolorColor ='yellow';
}
ChangeBgColor(color: string) {
// Change Font color and size
this.renderer.setElementStyle(this.el.nativeElement, 'color', color);
this.renderer.setElementStyle(this.el.nativeElement , 'font-size','24px');
}
}
Step 3: Add Following code into app.component.html
<div style="text-align:center">
<div appMydirective>
<h3>{{title}}</h3>
</div>
<input type="button" value="Click Here" appMydirective>
<div class="myclass" appMydirective>
MyCLass Div
</div>
</div>