在升级到angular-cli.beta-24
之前,我有这个路由结构:
+route1
- +subroute1
- +subroute2
- +subroute3
但是,当router.module
+route1
中定义了子路由时,这会失败,因为现在无法在默认情况下启用AOT时找不到它们。
我可以通过不在那里定义子路由来实现它,而是将它们移动到与应用程序中所有其他路由相同的router.module
。而是看起来像这样:
+route1
+subroute1
+subroute2
+subroute3
路线显然不再是子路线了。
虽然这有效,但对我来说它不是一个可行的解决方案,因为我的面包屑依赖于路由器树,如果你不能再拥有一个路由器树,它只会造成一团糟。
以下是一个示例(route1
' s router.module
文件):
const routes: Routes = [
{
path: '',
component: Route1Component
},
{
path: 'subroute1',
loadChildren: '+subroute1/subroute1.module#Subroute1Module'
},
{
path: 'subroute2',
loadChildren: '+subroute2/subroute2.module#Subroute2Module'
},
{
path: 'subroute3',
loadChildren: '+subroute3/subroute3.module#Subroute3Module'
}
];
为什么在使用AOT时无法定义这样的路线?我错过了什么?
答案 0 :(得分:2)
AOT和延迟加载在BETA.21之后很好地协同工作(我对此做了post)。
而不是从loadChildren
传递.
相对路径,而应该从app
文件夹开始:
const routes: Routes = [
{
path: '',
component: Route1Component
},
{
path: 'subroute1',
loadChildren: 'app/+route1/+subroute1/subroute1.module#Subroute1Module'
},
{
path: 'subroute2',
loadChildren: 'app/+route1/+subroute2/subroute2.module#Subroute2Module'
},
{
path: 'subroute3',
loadChildren: 'app/+route1/+subroute3/subroute3.module#Subroute3Module'
}
];
编辑1: 它可能来自你的桶。
beta.23遇到了一些麻烦,他们确实跳到了beta.24。但是在beta.23中引入了一个重大变化,如果你只阅读beta.24的更改日志,你可能会错过它。请查看Beta 23 changelog,了解更改:
蓝图:现在必须直接导入应用程序根模块和组件。 (例如,使用来自' ./ app / app.module'中的导入{AppModule};而不是从' ./ app /'中导入{AppModule};)
如果我理解的话,桶不能使用AOT(现在默认启用)。基本上,您可以删除index.ts
并直接导入所需内容。