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

How does angular custom directive initialize constructor parameters?

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

@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的值是多少呢?

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