2016-10-29 75 views
0

我爲Angular 2應用程序編寫了三個服務,其中兩個注入第三個並在那裏使用。導入這兩個(所有三個用@Injectable()裝飾)後,我仍然收到一個未知的提供商錯誤。在哪裏最好註冊Angular 2提供者

爲了解決這個問題,我嘗試將注入的服務放入模塊提供程序數組中,該數組工作正常。這是最好的方法嗎?

Angular文檔顯示在組件級別列出注射劑。我可以將所有可注入模塊放入模塊提供程序數組中嗎?

看起來像這樣會簡化應用程序設置,因爲在每個模塊的中央位置都配置了一切。沒有按組件基礎搜索組件的依賴關係。

回答

3

是的,如果服務是應用程序範圍(單例),則將其放入@NgModule.providers。只有將它添加到@Component.providers如果服務應該是組件作用域(每個組件應該得到自己的實例)


- 參見Hierarchical Injectors

1

這取決於根據你的要求,你想要什麼樣的服務。

辛格爾頓服務

如果你想使用singleton service,你可以將某個服務於中心區。你會認爲你應該在AppModule中使用/放置服務。 但還是實現真正的單例模式/例如,你應該將/在CoreModule-please check how to user CoreModule申報服務,然後導入CoreModuleAppModule

多實例服務

如果您在組件的@Component decorator聲明serivce,你將不得不在不同的組件服務的不同實例。

相關問題