是否存在用于确定模块是提供者还是导出其他提供者模块的试金石;用于确定模块是否是在"共享"中列出的候选者。模块?
来自angular.io:
"由于前面解释的原因,SharedModule不应该有提供程序。任何进口或再出口的模块也不应该有供应商。如果您偏离本指南,请了解您正在做什么以及为什么。"
https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-module-recommendations
但是,如果我去使用模块,让我们说ReactiveFormsModule或RoutingModule,我如何确定它是否通过了上述测试?如果我只使用SharedModule中没有提供者或导入模块重新导出提供者的模块,那么肯定必须有一些方法来判断模块是否满足此要求。它是什么?
答案 0 :(得分:2)
服务通常是具有应用范围的单身人士。
导入模块时,导入模块提供的服务将添加到主机模块的注入器中。通过在共享模块中提供服务,存在多个模块导入共享模块和创建服务的多个副本的真实危险,每个模块具有模块范围。如果您向SharedModule添加服务,请确保这是您的意图。
根据最佳实践,每个应用程序应该有一组Core模块。这些Core模块不是共享的(它应该只能由AppModule导入),因此在不破坏Singleton意图的情况下将服务添加到Core模块是安全的。
石蕊试验:
如果您想要在应用程序范围内共享的Singleton Services,那么 不要将它们放在 SharedModule 中,因为 SharedModules 可能是 从 相同 应用程序中的多个模块导入。代替 将它们放在 CoreModules 中,只应该由...导入 的AppModule。
请记住以下约定和指南:
答案 1 :(得分:1)