2017-07-25 72 views
0

自從挖掘了Angular dependency injection(DI)的前幾個基本級別並敲擊了for()的gem之後,一直想知道實際使用它的最佳實踐。角度2/4 +共享模塊:爲了forRoot()或不去forRoot()

我偶然發現了這個方法,同時尋找一種方法來允許延遲加載模塊訪問根上下文中的服務,允許在兩個模塊之間共享數據流,其中一個或兩個都可能是懶惰的加載。從那時起我就想知道,你可以使用forRoot()來處理共享模塊中的所有內容,並在整個應用程序中保存大量的import語句嗎?什麼是捕獲?是否有某些東西很容易用於根,以及其他不是的東西?或者是爲root開發的橋接延遲加載模塊的上述DI上下文問題?

+0

你是什麼意思「共享模塊中的所有內容」?它將如何保存導入語句? – Amit

回答

6

forRoot()的用途是在應用程序中有singleton services

forRoot()的含義是隻有一個由ModuleWithProviders導出的service實例。如果您在模塊的providers中添加了service並在許多地方使用該模塊,則在沒有forRoot()的情況下,可以在應用程序的不同層中有多個service的實例。使用forRoot(),它將創建一個service的新實例,如果最後一個沒有找到任何地方。

+0

這是我正在尋找的確認。我曾經聽說過它可能被用來提供更多的服務,但沒有看到任何具體的證據。 – joshrathke

1

forRoot靜態方法只是配置模塊的提供者的慣例。

例如:RouterModule.forRoot: 您將路由傳遞給forRoot方法,以便使用路由配置應用程序範圍的路由器服務。

使用在應用程序中隨處使用的組件,指令和管道創建SharedModule。

SharedModule不應該有供應商reasons explained here。其進口或再出口模塊也不應有供應商。如果您偏離本指南,請了解您正在做什麼以及爲什麼。