延迟加载模块中的角度延迟加载模块
Posted
技术标签:
【中文标题】延迟加载模块中的角度延迟加载模块【英文标题】:angular lazy load module in lazy loaded module 【发布时间】:2018-05-22 10:22:46 【问题描述】:我可以在延迟加载模块中延迟加载模块吗? 我有这样的“出版物”路线模块,但它加载了太多功能来编辑这个出版物,而用户可能没有这个权限。所以我尝试以某种方式对其进行优化,因为我有类似的组件,根据权限“编辑/添加”。 如果您有关于以某种方式优化权限的建议,我们会很高兴。
更新 是的你可以。只需在延迟加载的模块中导入其他模块以进行路由
【问题讨论】:
我认为使用堆叠的 LazyLoaded 模块应该开箱即用。您只需要将它们实现为普通的 LazyLoaded 模块。但它是很久以前我用过的,所以我不是 100% 确定 【参考方案1】:FpgTimeComponent
不是将要加载的惰性模块文件的一部分,所以你不能这样做。想一想,您正在尝试在惰性模块中导入一个组件,该模块对此一无所知,因为它没有在该模块中定义,也没有在您在LazyModule
中导入的任何其他模块中定义。那么它从哪里获取组件呢?
将FpgTimeComponent
添加到SharedModule
并将SharedModule
导入您的LazyModule
,或将FpgTimeComponent
移动到您的LazyModule
。一旦你做了其中之一,它应该就可以工作了。
无论如何,这是一种更好的方法,因为我可以保证,随着您继续开发,您将继续遇到与其他组件/其他惰性模块相同的错误。如果你在多个地方使用组件,那么它们应该像Angular best practices defines一样存在于SharedModule
中,并且应该在所有惰性模块中导入SharedModule
。
这是一个例子。
共享模块:
import FpgTimeComponent from './some/path';
@NgModule(
declarations: [
FpgTimeComponent
],
exports: [
FpgTimeComponent
]
)
LazyModule:
import SharedModule from '../shared/shared.module';
import LazyComponent from './lazy.component';
import routing from './lazy.routing';
@NgModule(
imports: [
routing,
SharedModule
],
declarations: [
LazyComponent
]
)
【讨论】:
以上是关于延迟加载模块中的角度延迟加载模块的主要内容,如果未能解决你的问题,请参考以下文章