Angular 4+动态包含所有提供程序和组件的模块,其中包含AOT编译且没有viewRef

时间:2018-03-10 20:13:35

标签: angular dynamic module angular5 aot

我正在尝试做什么:

我基本上是尝试在路由器外重新创建loadChildren。我希望根据用户是否可以访问它们来包含各种模块。由于各种原因,路由器延迟加载并不是很合适。我写过一些在webpack中编译的内容但不是有角度的。

我见过各种动态组件解决方案,但我特别希望动态地将模块包含在所有提供商和组件中。我不想创建动态组件。我见过的大多数解决方案都是在编译模块后在viewref中注入组件。我不喜欢这种方法,并希望复制loadChildren。不确定我是否需要预加载代码或什么。

我想要做的是从db获取用户有权访问的插件或模块列表,使用System.import在AOT中使用应用程序编译来获取这些模块,然后使用angular编译器在运行时编译它们并使用那些应用程序实例可访问的模块,无需在编译后呈现组件。

我做了什么:

我在webpack中工作,目前正在抓取模块并编译它。问题是在AOT编译中角度不知道模块,因此app中没有组件或服务或子模块可用。

我的代码示例:

load(parentInjector: Injector, path): Promise<NgModuleFactory<any>> {

return System.import(path).then((module: any) => {
  this.compiler.compileModuleAndAllComponentsAsync(module['ModuleName'])
    .then((compiled) => {
      let moduleReference = compiled.ngModuleFactory.create(parentInjector);

      return moduleReference
    }).then((moduleReference) =>{
    console.log(moduleReference)
  })
}); }

注意:

同样我不想要viewref,因为我不想渲染任何东西,我只想让这些模块可供应用程序使用,只有当用户有权访问它们时。谢谢你的帮助。

0 个答案:

没有答案