【发布时间】:2016-06-09 23:20:20
【问题描述】:
我现在正在学习 Angular2 Heros 教程。
我具体是at this step:
回到 HeroesComponent 并从它的 providers 数组中移除 HeroService。我们正在将此服务从 HeroesComponent 推广到 AppComponent。我们不希望在我们的应用程序的两个不同级别上提供此服务的两个副本。
app.comonent.ts:
import { Component } from '@angular/core';
import { HeroService } from './hero.service';
import { HeroesComponent } from './heroes.component';
@Component({
selector: 'my-app',
template: `
<h1>{{title}}</h1>
<my-heroes></my-heroes>
`,
directives: [HeroesComponent],
providers: [
HeroService
]
})
export class AppComponent {
title = 'Main App';
}
heros.component.ts:
import { Component, OnInit } from '@angular/core';
import { Hero } from './hero';
import { HeroDetailComponent } from './hero-detail.component';
import { HeroService } from './hero.service';
@Component({
selector: 'my-heroes',
template: `
... bla bla bla ...
`,
styles:[`
... bla bla bla ...
`],
directives: [HeroDetailComponent],
providers: [
HeroService
]
})
export class HeroesComponent implements OnInit {
public heroes: Hero[];
selectedHero: Hero;
constructor(
private heroService: HeroService
){}
ngOnInit() {
this.heroService.getHeroes().then( heroes => this.heroes = heroes );
}
onSelect = function (hero: Hero){
this.selectedHero = hero;
}
}
我的问题是,当我从 heros.components 的 Providers 列表中删除 HeroService 时,为什么这仍然有效?
我的假设是,因为我们已经在构造函数中指定我们需要一个 HeroService,一个将由父组件(在本例中为 app.component)提供。这是准确的吗?
【问题讨论】:
标签: angular