2016-02-27 55 views
1

有人能解釋什麼區別區別,Angular2注射 - 使用私人與@Inject

constructor(@Inject(Config) config:Config) { 
    this.config = config; 
} 

,並

constructor(private config:Config) { 

} 

假設配置是從自舉功能Angular2

回答

2
供應

@Inject裝飾器允許您指定有關注入內容的提示。在你的情況下,你不需要它,因爲你爲你的參數使用了一個類型。這是Angular2提供的裝飾器。

從Angular2文檔(https://angular.io/docs/ts/latest/api/core/InjectMetadata-class.html):

當@注入不存在時,所述噴射器將使用的參數的類型的註釋。

@Inject裝飾器可以與forwardRef一起使用,因爲ES6/TypeScript類不支持提升或者如果您想要注入Ng1服務/工廠,請使用à字符串。

private關鍵字允許您將參數定義爲類的私有屬性。這是TypeScript語言的一個特性。

+0

*「你不需要它,因爲你使用了一個類型參數」* - 這取決於OP試圖注入的是什麼類「config」。他可能或可能不需要「注入」。 – dfsq

+0

非常感謝您的評論,@dfsq!我同意你,如果你想使用例如forwardRef ...我會更新一點我的答案;-) –