2016-11-08 181 views
1

繼角2教程@https://angular.io/docs/ts/latest/tutorial/toh-pt4.html角提供商

@Component({ 
}) 

我插入的 「providers: [HeroService]」,其中包含的getHeroes()方法。

創建一個構造函數:

constructor(private heroService: HeroService) {} 

現在我不明白的是我怎麼了能夠使用

this.heroService.getHeroes()

在這個類中定義的唯一propertes是:

title = 'Tour of Heroes'; 
heroes: Hero[]; 
selectedHero: Hero; 

@Component修飾器中的提供者是否自動創建一個屬性以通過this.來訪問它?

應用程序工作,只是不知道如何奇蹟般地在

constructor(private heroService: HeroService) {} 

也能夠通過this.

回答

1

訪問heroService的private(也可能是public)創建一個屬性heroService並分配傳遞給構造函數的值。這是一個TypeScript功能,不是Angular2或DI依賴。

+0

有意思的是,如果我將它留空,它默認爲公共,但不會創建屬性,但是將其聲明爲私有或公共屬性會告知該類創建屬性。 很高興知道。我無法圍繞_why_這個語法應該與創建一個屬性有關。是因爲將它定義爲私有還是公共,意味着你暗示它會被重用? 對不起,如果這個問題沒有意義,我是相當新手。 但無論如何,謝謝你的答案。非常瞭解;) –

+1

將構造函數參數分配給屬性非常常見,因此他們創建了這個語法shugar。如果省略'private'和'public',則不會創建屬性,並且'heroService'只存在於構造函數中。 –