Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Объясните про Dependancy Injection (https://javascript.ru/forum/angular/66796-obyasnite-pro-dependancy-injection.html)

Chingachgook 11.01.2017 12:32

Объясните про 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 должен быть передан создаваемому компоненту? Как работает депенденси инжекшн?

destus 11.01.2017 17:30

Chingachgook,
Параллельно твоему дереву компонентов есть дерево инжекторов. Считай что инжектор это какой-то контейнер, в котром есть инстансы классов(сервисов). Когда в конструкторе ты внедряешь сервис, происходит поиск нужного инстанса в инжекторе этого компонента. Если он там есть -- именно он и используется, иначе происходит поиск по иерархии выше.

Рассматривай это как прототипное наследование.


Часовой пояс GMT +3, время: 10:44.