【发布时间】:2017-08-22 18:41:30
【问题描述】:
我正在寻找一种方法,通过它我可以在 Angular 中以相同的 path 加载多个模块。例如,假设我有三个模块AModule、BModule 和CModule,每个模块都有自己的RouterModule.forChild 调用。现在我想将所有这些模块安装在site 路由下。
我实现此目的的一种方法是将路由包装在RouterModule.forChild 调用中的site 路由下,如下所示:
RouterModule.forChild([
{
path: 'site',
children: [{}] // children goes here
}
])
我不知道这种方法是否正确,但它工作正常。这种方法的唯一问题是我必须在我想在site 下挂载的每个模块中指定canActivate。虽然这不是问题,但我一直在寻找更清洁的解决方案。
我知道有一个属性loadChildren 可以用来延迟加载模块。但我想急切地加载模块。
我正在使用 AngularCLI,它将我在 loadChildren 中指定的模块代码拆分到一个单独的 JavaScript 文件中,这不是我想要的。
我正在使用 AngularCLI v1.2.0 和 Angular v4.2.5。
非常感谢任何帮助。
谢谢
【问题讨论】:
-
我不确定,但是你可以导出AModule和BModule的组件,在CModule中使用这两个组件然后你可以使用延迟加载来加载CModule
-
为什么要在
AModule、BModule中定义路由,而不是在没有模块的情况下简单定义routes?模块在路由方面没有任何价值。它们将在编译期间合并。阅读Avoiding common confusions with modules in Angular -
嗨@MaximKoretskyi,感谢您的评论。从你最喜欢的作家那里得到答案总是感觉很棒:-)。让我读一下你提到的那篇文章,我很确定我会在读完之后得到答案。如果有任何进一步的混淆/问题,我将在此处或直接对文章发表评论。谢谢。
-
@ImranLatif,谢谢)是的,请阅读并跟进
标签: javascript angular module router