Я новичок в 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 рамки делает?