directive代码:
import {Directive,ElementRef,Input,HostListener,HostBinding} from "@angular/core";
@Directive({
selector: '[myhighlight]'
})
export class MyHighlightDirective {
@input() highlightcolor: string;
htmlEl: HTMLElement;
constructor(private el: ElementRef) {
this.htmlEl = el.nativeElement;
}
@HostListener('mouseenter') onMouseenter() {
this.highlight(this.highlightcolor || 'cyan');
}
@HostListener('mouseleave') onMouseleave() {
this.highlight('blue');
}
@HostListener('click') onClick() {
alert(this.highlightcolor);
}
@HostBinding('style.width') get width() {
return "200px";
}
private highlight(color: string) {
this.htmlEl.style.backgroundColor = color;
}
}
<div myhighlight [highlightcolor]="'red'">这是个测试类</div>