Angular CLI项目,在库中使用延迟加载路径配置

时间:2018-05-23 21:37:33

标签: angular angular-routing

我有一个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文件中找到差异。路由器示例集baseUrlsrc/tsconfig.app.json中的src/tsconfig.spec.json,其中Angular CLI直接在tsconfig.ts中设置它。所以我改变它以匹配路由器样本并且它起作用。

但是如何在例如crisis-center是一个图书馆(ng generate library crisis-center),不属于src/app

如何配置baseUrlloadChildren的外观如何(例如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' }

0 个答案:

没有答案