我正在JS
中使用系统Angular 6
并使用angular-cli
动态加载模块,与下面的链接非常相似。
(Load new modules dynamically in run-time with Angular CLI & Angular 5)
动态加载的模块将创建其子注入器,并创建新的服务实例,而不使用根注入器中的服务。
根据Angular
文档,延迟加载的模块创建其自己的子注入器和服务实例。为了避免这种情况(对于单例),他们建议在延迟加载的模块中创建forRoot
静态方法,并将其导入到应用程序模块中。
但就我而言,由于我在运行时加载模块,因此无法在引导程序中导入LazyLoadedMOdule.forRoot()
。我知道哪个模块只会在运行时加载。
您能否建议保持服务单例并在动态加载的模块中使用它?
答案 0 :(得分:0)
对于需要在整个应用程序中都是单例的服务,建议的方法是在 core 模块中定义这些服务,然后将其导入到根模块(AppModule
)中。
您可以参考Angular Style Guide了解更多详细信息。