0

我想创建一个能够在任何主机组件上的角度指令,并在主机的 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 方法,也许我的所有方法都是错误的?我该怎么做

4

0 回答 0