Объясните про 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, время: 10:44. |