0

在我升级到之前,angular-cli.beta-24我有这个路线结构:

+route1
 - +subroute1
 - +subroute2
 - +subroute3

但是,当在 of 中定义子路由时,这会失败router.module+route1因为在默认情况下启用 AOT 后找不到它们。

我可以通过不在那里定义子路由来使其工作,而是将它们移动到与router.module应用程序中的所有其他路由相同的位置。而是看起来像这样:

+route1
+subroute1
+subroute2
+subroute3

这些路线显然不再是子路线了。

虽然这可行,但这对我来说不是一个可行的解决方案,因为我的面包屑依赖于路由器树,如果你不能再拥有路由器树,它只会在整体上造成混乱。

这是一个示例(route1router.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 时不能这样定义路由?我错过了什么?

4

1 回答 1

2

自 BETA.21 以来,AOT 和延迟加载可以很好地协同工作(我对此发表了一篇文章)。

而不是从您那里传递到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 变更日志,重大变更:

蓝图:现在必须直接导入应用程序根模块和组件。(例如,使用 import { AppModule } from './app/app.module'; 而不是 import { AppModule } from './app/';)

如果我理解得很好,桶不适用于 AOT(现在默认启用)。基本上,您可以删除index.ts并直接导入您需要的内容。

于 2017-01-02T11:53:36.740 回答