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) { }
它仍然在没有任何警告的情况下工作。那么foo
和bar
的值是多少呢?
组件构造函数中的参数是Dependency Injectors。初始化组件时,它会创建每个 class 或作为构造函数参数 (DI) 提到的提供程序的实例。因此,添加更多参数只会创建更多 class 注入实例。这里 foo
和 bar
分别是 ElementRef
和 Renderer2
的实例。
以下代码片段是自定义指令的一部分:
@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) { }
它仍然在没有任何警告的情况下工作。那么foo
和bar
的值是多少呢?
组件构造函数中的参数是Dependency Injectors。初始化组件时,它会创建每个 class 或作为构造函数参数 (DI) 提到的提供程序的实例。因此,添加更多参数只会创建更多 class 注入实例。这里 foo
和 bar
分别是 ElementRef
和 Renderer2
的实例。