Angular 2 AOT和延迟加载子模块

Angular 2 AOT和延迟加载子模块,angular,typescript,angular2-routing,angular2-aot,Angular,Typescript,Angular2 Routing,Angular2 Aot,在升级到angular cli.beta-24之前,我有以下路线结构: +route1 - +subroute1 - +subroute2 - +subroute3 但是,如果在+route1的router.module中定义了子例程,则此操作将失败,因为在默认情况下启用AOT后,无法找到它们 我可以通过不在那里定义子例程,而是将它们移动到与应用程序中所有其他路由相同的router.module来实现它。而是像这样: +route1 +subroute1 +subroute2 +subr

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

+route1
 - +subroute1
 - +subroute2
 - +subroute3
但是,如果在
+route1
router.module
中定义了子例程,则此操作将失败,因为在默认情况下启用AOT后,无法找到它们

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

+route1
+subroute1
+subroute2
+subroute3
显然,这些路径不再是子路径

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

下面是一个示例(
route1
router.module
文件):


为什么在使用AOT时不能这样定义路由?我遗漏了什么?

自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的更改日志,您可能会错过它。请查看,正在破坏更改:

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


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

自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的更改日志,您可能会错过它。请查看,正在破坏更改:

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


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

我已经试过了,但运气不好。问题是,一些子路由可以工作,但当延迟加载深度为3级时,它们永远不会工作。因为从我的
AppModule
开始,我有了另一个级别的
AdminAreaModule
,它有一个
仪表板模块,但超出这个级别就不起作用了。。尽管做了完全相同的定义。是我的桶进口引起了问题吗?我不理解“桶进口”。你这么说是什么意思?Barrel是一个多余的、毫无意义的术语,是角度世界中的某个人提出的,用来描述
索引
文件的约定,该文件导出其包含目录的内容。没有必要使用这样的术语,希望人们会停止使用它。目前正在更改数千个进口lol,等我的手指停止流血后,我会给你回复。已经尝试过了,但运气不佳。问题是,一些子路由可以工作,但当延迟加载深度为3级时,它们永远不会工作。因为从我的
AppModule
开始,我有了另一个级别的
AdminAreaModule
,它有一个
仪表板模块,但超出这个级别就不起作用了。。尽管做了完全相同的定义。是我的桶进口引起了问题吗?我不理解“桶进口”。你这么说是什么意思?Barrel是一个多余的、毫无意义的术语,是角度世界中的某个人提出的,用来描述
索引
文件的约定,该文件导出其包含目录的内容。没有必要使用这样的术语,希望人们能停止使用它。目前正在改变成千上万的进口货。哈哈,等我的手指止血后,我会回复你的。