在Angular中的同一父路径下加载多个模块

时间:2017-08-22 18:41:30

标签: javascript angular module router

我'我正在寻找一种方法,通过它我可以在Angular中的相同DataReceived下加载多个模块。例如,假设我有三个模块pathAModuleBModule,每个模块都有自己的CModule调用。现在我想将所有这些模块安装在RouterModule.forChild路由下。

我实现这一目标的一种方法是在site路由下的RouterModule.forChild呼叫中包含路由,如下所示:

site

我不知道这种方法是否正确但工作正常。这种方法唯一的问题是我必须在RouterModule.forChild([ { path: 'site', children: [{}] // children goes here } ]) 下要挂载的每个模块中指定canActivate。虽然这不是问题,但我一直在寻找更清洁的解决方案。

我知道有一个属性site可用于懒惰地加载模块。但是我想热切地加载模块。

我'我正在使用AngularCLI,它将我在loadChildren中指定的模块代码拆分到一个单独的JavaScript文件中,这不是我想要的。

我'我正在使用AngularClI v1.2.0和Angular v4.2.5。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

我对你的目标以及你最终想要实现的目标并不完全清楚,但这里有一些想法。

您可以使用loadChildren和“延迟加载”按需加载或急切加载。如果您选择了急切加载的路线,只要加载主路线并显示第一个视图,标记为急切加载的其他模块将立即异步加载。

我在这里有一个示例:APM-Final文件夹中的https://github.com/DeborahK/Angular-Routing

我不清楚为什么你不想要模块拆分。它可以显着提高应用程序的启动性能(显示第一页的时间)。

canActivate之外,还有canActivateChild,因此您可以将其放在父级上,而不必为每条路线重复此操作。这方面的文档在这里:https://angular.io/api/router/CanActivateChild