Angular 7-即时加载无路由模块(共享的提供程序/服务)

时间:2019-03-07 09:19:36

标签: angular module lazy-loading angular7 jit

我想在主应用程序中加载有角度的7模块,以便能够与其他可加载的可路由模块(带有组件)共享模型和服务。

出于记录目的,我有一个app模块,其中包括Core和Shared模块。多数民众赞成在“静态”部分。另一方面,我有一些模块可以动态加载,这些模块是库(内置到UMD文件中并放入资产中)。它就像一个市场,您可以在其中激活一些模块,添加模块...)。现在,我可以即时加载一些模块,并使用路由使其可访问。

enter image description here

但是我想在其他模块中导出api服务,以使其他组件模块可以访问它。像这样:

enter image description here

在加载组件模块之前,我必须加载某种对等依赖项。 现在,我可以像加载组件模块一样加载api-service,但是我不知道如何访问我的服务(例如TestService)。

private loadApiDependency(dep: ModuleDependency) {

return SystemJS.import(`${dep.location}`).then((exports) => {
  const moduleNg = exports[`${dep.moduleName}`];
  return this.compiler.compileModuleAsync(moduleNg).then((moduleFactory: NgModuleFactory<any>) => {
    const moduleRef = moduleFactory.create(this.injector);
    console.log(this.injector.get('TestService'));
    return moduleFactory;
  });
 });
}

我的想法是使用Core模块引用所有即时加载服务。但是,现在我在访问TestService时出错:NullInjectorError: No provider for TestService!

除此之外,我真的不知道如何在组件模块中引用我的api。我以为我可以使用某种对等依赖项,但是在开发时间中,引用将丢失...

有人有类似的解决方案或想法吗?

请不要回答我“使用延迟加载”,“将您的api放入核心”等等,它必须是这样。或非常相似。

非常感谢。

0 个答案:

没有答案