Объясните про Dependancy Injection
import { Component } from '@angular/core';
import { Router } from "@angular/router";
@Component({
selector: 'page2',
providers: [Router],
template: require('./counter.component.html')
})
export class Page2Component {
constructor(private router: Router) {
}
public gogogo() {
this.router.navigate('/');
}
}
Пытаюсь понять, как роутер попадает в компонент. Как всё это работает? Откуда ангуляр должен понять, какой именно экземпляр класса Router должен быть передан создаваемому компоненту? Как работает депенденси инжекшн? |
Chingachgook,
Параллельно твоему дереву компонентов есть дерево инжекторов. Считай что инжектор это какой-то контейнер, в котром есть инстансы классов(сервисов). Когда в конструкторе ты внедряешь сервис, происходит поиск нужного инстанса в инжекторе этого компонента. Если он там есть -- именно он и используется, иначе происходит поиск по иерархии выше. Рассматривай это как прототипное наследование. |
| Часовой пояс GMT +3, время: 05:27. |