2017-04-21 44 views
1

似乎每個組件創建自己的[a]服務實例。我不明白爲什麼。如何避免角飛鏢中的服務的多個實例

我注意到這個AngularJs 2 - multiple instance of service created,但我不是正確的解決方案清楚。難道我在主創建服務實例_myService

void main() { 
    bootstrap(AppComponent,[MyService]); 
} 

,然後將其複製到[兒童]成分(因爲我也從組件供應商刪除MyService)?這看起來不正確,因爲組件在實例化之前引用_myService,我必須檢查它是否爲空。

感謝

史蒂夫

回答

1

可以使用工廠模式的構造像here

0

創建的引導您的服務將確保沒有對應用程序的它只有一個實例(如果你沒有在某些組件再次提供的話)。

你得到它只有當你在一些@Component提供多個副本 - 組件(及其所有子)的每個實例屆時將有服務的一個單獨的實例。

+0

「在引導程序中創建服務將確保應用程序只有一個實例。」 - 但事實並非如此。我有幾個實例。所以,如果我從組件提供程序中刪除MyService,組件如何從引導程序訪問實例?謝謝,s – Lymp

+0

DI與Angular中的DOM樹緊密相關 - 如果您在應用程序級別提供某些內容,則任何組件都可以注入它。 – rkj