Angular 2:如何在提前编译时实现延迟路由?

时间:2016-09-21 11:01:51

标签: angularjs angular webpack angular-compiler-cli angular2-aot

我已经使用ngc编译器成功创建了.ngfactory文件,并且还使用“platformBrowser()。bootstrapModuleFactory(AppModuleNgFactory)”更新了我的main.ts。

app.routes.ts

const appRoutes: Routes = [
    { path: '', loadChildren: 'app/starter/starter.module#StarterModule' },
    ...
    ...
    ...
];

export const appRoutingProviders: any[] = [

];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);

现在,当我使用“ng build -prod&& ng serve -prod”提供我的应用程序时,它成功托管。 但是,当我在浏览器上打开它时,我的控制台会向我显示此错误 “EXCEPTION:Uncaught(in promise):错误:无法找到模块'app / starter / starter.module.ngfactory'。”

当我检查我的目录时,文件“确实”存在但它无法找到它。 有没有人面对这个问题?如果是,那么如何解决呢?感谢。

我正在使用Angular-cli beta 14。

1 个答案:

答案 0 :(得分:1)

aot输出只接受你在tsconfig-aot.json中的files-array中添加的文件。所以一定要在那里添加所有模块,包括那些延迟加载的模块。因为它们不再包含在应用程序本身的路由器中的“loadChildren”中。

 "files": [
"app/app.module.ts",
"app/starter/starter.module.ts",
"app/main.ts"  ],

之后在AoT文件夹中应该编译所有模块。之后,您可以将输出放在“aot”文件夹(或构建编译的文件夹)中,并进行树形图等。

这方面的一个例子,但没有angular-cli,使用webpack可以在这里找到:

https://github.com/FabianGosebrink/ASPNET-ASPNETCore-AngularJS-Angular/tree/master/Angular-Client-Webpack