如何从node_modules延迟加载外部模块?

use*_*043 5 angular

我们可以像这样加载一个本地模块

    {
        path: 'somePpath',
        loadChildren: 'app/path/some.module#SomeModule'
    },
Run Code Online (Sandbox Code Playgroud)

我们如何延迟加载来自外部库的模块,该模块驻留在node_modules中?

小智 6

要在路由器模块中加载外部模块,您可能需要使用 Wrapper 模块。在您拥有路由模块的同一个本地项目中创建一个包装器模块。使用传统的导入语法在此包装器模块中导入您的外部模块。

import { SomeModule } from '@externalLib';
Run Code Online (Sandbox Code Playgroud)

将此模块包含在NgModule的导入数组中。

@NgModule({
  imports: [SomeModule]
})
export class SomeWrapperModule {
}
Run Code Online (Sandbox Code Playgroud)

然后在路由器模块中使用这个包装器模块,就像我们通常使用的模块一样。

// for Angular 7 and below 
{
    path: 'some-path',
    loadChildren: '../somewrapper.module#SomeWrapperModule'
}

// for Angular 8+
{
    path: 'some-path',
    loadChildren: () => import('../somewrapper.module').then(mod => mod.SomeWrapperModule)
}
Run Code Online (Sandbox Code Playgroud)