角度自定义指令如何初始化构造函数参数?

时间:2018-12-03 11:17:41

标签: angular directive

以下代码段是自定义指令的一部分:

@Directive({
  selector: '[appBasicDirective]'
})
export class BetterHighlightDirective implements OnInit {

  @HostBinding('style.backgroundColor') backgroundColor = 'transparent';

  constructor(private el: ElementRef, private renderer: Renderer2) { }

  ngOnInit(): void {
    this.renderer.setStyle(this.el.nativeElement, 'background-color', 'blue');
  }

  ......

由于它们没有显式初始化,因此Angular如何在内部初始化构造函数参数?如果我将随机参数扔进去,就像这样:

constructor(private el: ElementRef, private renderer: Renderer2, 
  private foo: ElementRef, private bar: Renderer2) { }

它仍然可以正常工作而没有任何警告。那么foobar的值是什么?

1 个答案:

答案 0 :(得分:0)

组件构造函数中的参数为Dependency Injectors。初始化组件时,它会创建每个类或提供程序的实例,这些实例或构造程序称为构造函数参数(DI)。因此,添加更多参数只会创建注入的类的更多实例。这里的foobar仅仅是ElementRefRenderer2的实例。