我想创建一个能够在任何主机组件上的角度指令,并在主机的 ngOnChange 触发时使主机组件背景闪烁绿色。
我试图通过 viewContainerRef 访问(在指令中)主机 ngOnChange 方法,但找不到它。
import { Directive, ElementRef, ViewContainerRef } from '@angular/core';
@Directive({
selector: '[OnChangeBlink]'
})
export class OnChangeBlinkDirective{
readonly green_color:string = '#27AE60'
readonly white_color:string = '#FFFFFF'
element_ref:ElementRef;
doBlink(color: string):void {
if(color){
this.element_ref.nativeElement.style.backgroundColor = this.green_color;
setTimeout(() => {
this.element_ref.nativeElement.style.backgroundColor = this.white_color;
}, 500);
}
}
constructor(elRef: ElementRef, private vcRef: ViewContainerRef) {
this.element_ref = elRef;
const component = vcRef['_data']['componentView']['component'];
if (component.hasOwnProperty('ngDoCheck')){//never happens
console.log(component['ngDoCheck']);
}
}
}
从来没有罚款 ngOnChange 方法,也许我的所有方法都是错误的?我该怎么做?