如何从 nrwl 工作区 libs 文件夹延迟加载模块?

Abd*_*oof 5 angular-cli angular nrwl

我有一个名为 的主应用程序myapp。我已经配置了我的路线如下:

const routes: Routes = [
  { path: 'home', loadChildren: 'libs/home/home.module#HomeModule'},
  { path: 'admin', loadChildren: 'libs/admin/admin.module#AdminModule' },

  { path: '', redirectTo: '/home', pathMatch: 'full' },
  { path: '**', component: PageNotFoundComponent }
];
Run Code Online (Sandbox Code Playgroud)

我的homeadmin是具有自己路由的模块,并放置在libs. 当我运行我的应用程序时,我的模块没有被加载。我想这只是一个路径问题..有人可以指导我如何从 nrwl 工作区的库文件夹中正确配置延迟加载模块吗?

这是我得到的错误:

ERROR Error: Uncaught (in promise): Error: Cannot find module 'libs/home/home.module'.
Error: Cannot find module 'libs/home/home.module'.
    at eval (eval at ../../../../../apps/myapp/src/$$_lazy_route_resource lazy recursive (main.bundle.js:6), <anonymous>:5:9)
    at ZoneDelegate.invoke (webpack-internal:///../../../../zone.js/dist/zone.js:388)
Run Code Online (Sandbox Code Playgroud)

注意:我更新了 tsconfig.app.json 和 tslint.json,如下所示: tslint.json

"nx-enforce-module-boundaries": [
      true,
      {
        "lazyLoad": [
          "home",
          "admin"
        ],
        "allow": []
      }
    ]
Run Code Online (Sandbox Code Playgroud)

和 tsconfig.app.json:

 "include": [
    "**/*.ts",
    /* add all lazy-loaded libraries here: "../../../libs/my-lib/index.ts" */
    "../../../libs/home/index.ts",
    "../../../libs/admin/index.ts"    
  ],
Run Code Online (Sandbox Code Playgroud)

谢谢。

JBe*_*ton 3

https://nrwl.io/nx/guide-nx-workspace#create-an-angular-module-lib

ng 生成 lib mymodule --routing --lazy --parentModule=apps/myapp/src/myapp.module.ts

  • 这个答案提供了一个命令,*创建一个新的库*,该库将由创建时指定的某个单个应用程序延迟加载。它并没有真正回答如何延迟加载*已存在的*库(可能需要由多个应用程序延迟加载)的问题。如果能扩展这个答案,我们将不胜感激。 (5认同)
  • 链接已失效! (2认同)