Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角动态加载模块需要使用根注入器服务_Javascript_Angular_Angular6 - Fatal编程技术网

Javascript 角动态加载模块需要使用根注入器服务

Javascript 角动态加载模块需要使用根注入器服务,javascript,angular,angular6,Javascript,Angular,Angular6,我在Angular 6中使用systemJS动态加载模块,并使用Angular cli与下面的链接非常类似 () 动态加载的模块创建它的子注入器并创建新的服务实例,而不是使用根注入器中的服务 根据Angulardoc,延迟加载模块创建自己的子注入器和服务实例。为了避免这种情况(对于singleton),他们建议在延迟加载的模块中创建forRoot静态方法,并将其导入到app模块中 但在我的情况下,由于我在运行时加载模块,所以无法在引导时导入lazyloademodule.forRoot()。我知

我在
Angular 6
中使用system
JS
动态加载模块,并使用
Angular cli
与下面的链接非常类似

()

动态加载的模块创建它的子注入器并创建新的服务实例,而不是使用根注入器中的服务

根据
Angular
doc,延迟加载模块创建自己的子注入器和服务实例。为了避免这种情况(对于singleton),他们建议在延迟加载的模块中创建
forRoot
静态方法,并将其导入到app模块中

但在我的情况下,由于我在运行时加载模块,所以无法在引导时导入
lazyloademodule.forRoot()
。我知道只有在运行时才会加载哪个模块


您能否建议保留服务单例并在动态加载的模块中使用它?

对于整个应用程序中需要单例的服务,建议的方法是在核心模块中定义这些服务,然后将其导入根模块(
AppModule


有关更多详细信息,请参阅。

这是可以做到的,但这里的问题是,延迟加载的模块总是使用新的服务实例创建单独的子注入器。处理它的唯一方法是在主应用程序中导入静态方法forRoot,这在我的情况下是不可能的。请确保您没有在延迟加载的模块定义中重新注册这些服务。换句话说,它们应该只在核心模块的
提供者
部分声明。