Как угловая пользовательская директива инициализирует параметры конструктора? - PullRequest
0 голосов
/ 03 декабря 2018

Следующий фрагмент кода является частью пользовательской директивы:

@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 тогда?

1 Ответ

0 голосов
/ 03 декабря 2018

Параметрами в конструкторах компонентов являются Инжекторы зависимостей .Когда компонент инициализируется, он создает экземпляр каждого класса или поставщиков, упомянутых в качестве параметров конструктора (DI).Таким образом, добавление большего количества параметров просто создаст больше экземпляров введенного класса.Здесь foo и bar - это не что иное, как экземпляры ElementRef и Renderer2 соответственно.

...