Реализация произвольного аргумента порядка построения вызова в Javascript - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок в angular / js / ts и пытаюсь выяснить, как работает Dependency Injection в angular.

До этого момента многое было понятно, но я не понимаю как angular может вызвать конструктор компонента и внедрить зависимости, не зная порядка, в котором они определены в определении конструктора.

Просто чтобы иметь контекст. Возьмите эту простую модификацию примера Angular .io для начала работы .

Когда я определяю конструктор компонента product-list.component.ts, я могу использовать эти два определения конструктора, и все работает.

//definition 1
constructor(s2: S2Service, s1: S1Service){
    s1.log();
    s2.log();
  }
//definition 2
constructor(s1: S1Service, s2: S2Service){
    s1.log();
    s2.log();
  }

Как фреймворк знает порядок, в котором я определяю конструктор компонента? Как Angular вызывает этот конструктор?

Если вам нужен еще более простой пример. Предположим, мы хотим определить класс с помощью конструктора, который принимает 4 аргумента (с 4 различными типами). Как нам написать конструктор, чтобы он мог принимать 4 аргумента в каждом возможном порядке, не определяя определения конструктора, кратные (24? (Не уверены)?), И не используя именованные аргументы или инкапсуляцию какого-либо объекта, как Angular рамки делает?

1 Ответ

0 голосов
/ 14 апреля 2020

По типам. Он принимает тип для вставки и ищет этот тип в аргументах конструктора.

...