[英]How to tell if an Angular2 module is ok to import into shared module
是否存在用於確定模塊是提供者還是導出其他提供者模塊的試金石; 用於確定模塊是否是在“共享”模塊中列出的候選模塊?
來自angular.io:
“由於之前解釋的原因,SharedModule不應該有供應商。它的任何導入或重新導出的模塊也不應該有提供者。如果你偏離了這個指導方針,就要知道你在做什么以及為什么。”
https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-module-recommendations
但是,如果我去使用模塊,讓我們說ReactiveFormsModule或RoutingModule,我如何確定它是否通過了上述測試? 如果我只使用SharedModule中沒有提供者或導入模塊重新導出提供者的模塊,那么肯定必須有一些方法來判斷模塊是否滿足此要求。 它是什么?
服務通常是具有應用范圍的單身人士。
導入模塊時,導入模塊提供的服務將添加到主機模塊的注入器中。 通過在共享模塊中提供服務,存在多個模塊導入共享模塊和創建服務的多個副本的真實危險,每個模塊具有模塊范圍。 如果您向SharedModule添加服務,請確保這是您的意圖。
根據最佳實踐,每個應用程序應該有一組Core模塊。 這些Core模塊不是共享的(它應該只能由AppModule導入),因此在不破壞Singleton意圖的情況下將服務添加到Core模塊是安全的。
石蕊試驗:
如果您需要在應用程序范圍內共享的Singleton Services,則不要將它們放在SharedModule中,因為可以從同一應用程序中的多個模塊導入SharedModule 。 而是將它們放在CoreModules中 ,它只能由AppModule導入。
請記住以下約定和准則:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.