Angular loadChildren属性的模块绝对路径不起作用

时间:2018-08-12 19:28:11

标签: angular typescript

我正试图从我的app-routing.module.ts中延迟加载模块,并且它的唯一工作方式是使用相对路径,例如:

{ path: 'admin', loadChildren: './admin/admin.module#AdminModule', canLoad: [AuthGuard] },

如果我执行以下操作,它将失败并说:ERROR in无法解析相对于/C/projects/my-app/src/app/app-routing.module.ts的模块app / admin / admin.module:< / p>

{ path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule', canLoad: [AuthGuard] }

在更高版本的Angular中,此路径必须是相对的,而不是绝对的,是否有所更改?为什么在这里的演示中起作用: https://stackblitz.com/angular/moybyqrjdeom

在Angular文档中它表示以下内容:

地址是AdminModule文件的位置(相对于应用程序根目录),后跟#分隔符,后跟导出的模块类AdminModule的名称。

2 个答案:

答案 0 :(得分:2)

构建基于您的tsconfig。如果使用的是CLI生成的角度应用程序,则应具有两个配置。

在您的路由内尝试执行以下操作:

{ path: 'admin', loadChildren: 'src/app/admin/admin.module#AdminModule', canLoad: [AuthGuard] }

如果您app/tsconfig仅在根上扩展tsconfig,则应该可以解决该问题。

您的外部tsconfig应该具有baseUrl: "."

答案 1 :(得分:0)

因为使用导入

{ path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule', canLoad: [AuthGuard] }

Angular将从根目录搜索模块,而根目录在那里不可用。 Angular根本无法检测到您的模块,因此您需要提供正确的路径。