我有一个Angular 6 CLI工作区包含一个带有功能模块的库。每个要素模块都包含自己的路径,但我希望库路由模块成为父路径 - 因此路径应该与布局实际匹配:libraryA / featureA。
解决方案似乎是延迟加载库模块,但我无法使其工作。我从一个简单的设置开始,我使用ng new
创建了一个新的Angular应用,然后我下载了Router sample并将所有文件从router/src/app
复制到我的src/app
文件夹。执行ng build
显示第一个错误:
ERROR in Could not resolve module app/admin/admin.module relative to /E/git/my-app/src/app/app-routing.module.ts
所以我开始将路由器示例与我的项目进行比较,并在tsconfig * .ts文件中找到差异。路由器示例集baseUrl
和src/tsconfig.app.json
中的src/tsconfig.spec.json
,其中Angular CLI直接在tsconfig.ts
中设置它。所以我改变它以匹配路由器样本并且它起作用。
但是如何在例如crisis-center
是一个图书馆(ng generate library crisis-center
),不属于src/app
?
如何配置baseUrl
? loadChildren
的外观如何(例如loadChildren: 'crisis-center/crisis-center.module#CrisisCenterModule'
)?事实是,无论我尝试什么,我都会遇到上面的错误消息Could not resolve module relative to ...
。
我刚刚将问题部分添加到GitHub的公共存储库中:
https://github.com/AndreasFagschlunger/o2xfs-angular/commit/8b0f8735d799943088e61a5c546e3c27d89f09b3
所以你可以git checkout
自己尝试,ng build operator
可以正常工作但ng build
无论我在loadChildren
(app-routing.module.ts)中设置的内容都会失败。< / p>
祝你好运, 比利
这不可能都是错的,因为解决方法是加载模块同步,例如这很好用:
export function loadOperatorModule() {
return OperatorModule;
}
const appRoutes: Routes = [
{
path: 'operator',
loadChildren: loadOperatorModule
},
{ path: '', redirectTo: '/operator', pathMatch: 'full' }
];
库模块(运算符)中的功能模块(cdm)也是如此,解决方法有效,但不知道如何使用在运行时不产生错误的字符串值设置loadChildren
:
projects\operator\src\lib\operator-routing.module.ts
想要延迟加载
`项目\运算\ SRC \ lib中\ CDM \ cdm.module.ts
{ path: 'cdm', loadChildren: 'cdm/cdm.module#CdmModule' }
{ path: 'cdm', loadChildren: 'lib/cdm/cdm.module#CdmModule' }
{ path: 'cdm', loadChildren: './cdm/cdm.module#CdmModule' }