当前位置:  开发笔记 > 编程语言 > 正文

在angular2中的延迟加载模块之间共享外部模块

如何解决《在angular2中的延迟加载模块之间共享外部模块》经验,为你挑选了1个好方法。

我的应用程序的组件使用重量级外部包(ag-grid,大约1MB),作为angular2模块(AgGridModule)提供.我想只在需要使用它的组件时加载包,所以我ContentModule和它的所有子模块都是延迟加载的.整个结构看起来像这样:

在此输入图像描述

然而,当我导入AgGridModule到两个Submodule1Submodule3,它最终被纳入编制JS两次,使得无论1.chunk.js和3.chunk.js大.我尝试将其导入ContentModule,但子模块无法识别包含在其中的组件AgGridModule,即使我将它们列在exports属性中也是如此ContentModule.

@NgModule({
  imports: [
    ContentRoutingModule,
    SomeOtherModule,
    AgGridModule.withComponents([])
  ],
  exports: [
    // this is the component from AgGridModule that I use
    AgGridNg2
  ]
})
export class ContentModule { }

有没有办法在延迟加载的模块之间共享模块,或者将导入模块的某些组件暴露给延迟加载的子模块?

UPD:创建共享模块并将其导入子模块没有帮助,仍然有两个块,每个块大约1MB: 在此输入图像描述

UPD2:我通过将Submodule1和Submodule3合并到一个模块中来临时解决了这个问题.



1> PierreDuc..:

您需要创建一个SharedAgGridModule

@NgModule({
  imports: [
    AgGridModule.withComponents([])
  ],
  exports: [
    ContentModule,
    AgGridModule
  ]
})
export class SharedAgGridModule{}

然后,应仅为使用AgGrid的子模块导入此模块。无需ContentModule在这些子模块中导入,因为它是在此模块中导出的

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有