Angular 6延迟加载路线

时间:2018-07-03 10:58:14

标签: angular routing

我想在我的项目中为管理员添加延迟加载的路由。我正在使用ASP Net Core后端和Angular 6前端,因此我的编译代码输出目录是:wwwRoot / Angular / dist。当我编译项目时,我看到文件“ admin-admin-module-ngfactory.js存在在那里,但是当我尝试输入页面'/ admin / dash'时,它会抛出错误:

Failed to load resource: the server responded with a status of 404 (Not Found)
Error: Uncaught (in promise): Error: Loading chunk admin-admin-module-ngfactory failed.
(error: http://localhost:5000/admin-admin-module-ngfactory.js)
Error: Loading chunk admin-admin-module-ngfactory failed.
(error: http://localhost:5000/admin-admin-module-ngfactory.js)

这是我的路由模块:

admin-routing.module.ts:

const routes: Routes = [ 
  { path: 'dash', component: AdminDashboardComponent, pathMatch: 'full'}
];


@NgModule({
  imports: [
    RouterModule.forChild(routes)
  ],
  exports: [RouterModule],
  declarations: []
})
export class AdminRoutingModule { }

和app-routing.module.ts:

const routes: Routes = [
  { path: 'dashboard', component: DashboardComponent },
  { path: 'error', component: ErrorComponent },
  { path: 'admin', loadChildren: './admin/admin.module#AdminModule' },
  { path: '', pathMatch: 'full', redirectTo: 'dashboard' },
];

@NgModule({
  imports: [ RouterModule.forRoot(routes) ],
  exports: [RouterModule]
})
export class AppRoutingModule { }

更新:

如果我使用dotnet run(使用ng build --aot)运行项目,则无法使用,但是如果我仅使用ng serve --aot启动Angular应用程序,则可以使用。

2 个答案:

答案 0 :(得分:2)

在.angular-cli.json文件中添加以下行。

"apps": [
{
  "deployUrl": "Angular-Build-Path/",

谢谢。

答案 1 :(得分:0)

根据Angular的部署文档:

  

如果将文件复制到服务器子文件夹,请附加build标志,   --base-href并进行适当设置。

因此,您应该在.angular-cli.json文件中使用-base-href 参数。

(可选)您可以在没有-base-href配置的情况下(位于angular-cli-file中)在开发模式下工作,而仅在应用生产版本中进行设置。

ng build --base-href = / Angular / dist /

参考文献:

https://angular.io/guide/deployment#simplest-deployment-possible

https://angular.io/guide/deployment#the-base-tag

相关问题