我正试图从我的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的名称。
答案 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根本无法检测到您的模块,因此您需要提供正确的路径。