我正在尝试做什么:
我基本上是尝试在路由器外重新创建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,因为我不想渲染任何东西,我只想让这些模块可供应用程序使用,只有当用户有权访问它们时。谢谢你的帮助。