在特征模块中延迟加载Angular Material

时间:2019-09-02 08:00:51

标签: angular architecture lazy-loading angular-material2 angular-module

目前我有MyAngularModule与此类似:

/app/material/material.module.ts

import { MatButtonModule, MatIconModule } from '@angular/material';

const MaterialComponents = [
  MatButtonModule,
  MatIconModule,
...
];

@NgModule({
  imports: [
    MaterialComponents
  ],
  exports: [
    MaterialComponents
  ],
})
export class MyMaterialModule {

}

现在已在AppModule中将其导入一次。

目前,我有一个“扁平”模块架构,所有模块都急切地加载。

现在,我正在将应用程序体系结构更改为具有核心,共享和功能模块(使用loadChildren延迟加载)。

例如

/features/data-grid/data-grid.module.ts

该模块将使用一些Angular Material组件(例如SpinnerModule),但不是全部。

其他功能模块将使用其他一些Material组件。
显然,其中的某些组件将在许多功能模块中使用。

问题是:如何在特征模块中加载所需的材料组件? MyMaterialModuleshared模块的子模块吗?

1 个答案:

答案 0 :(得分:3)

如果只想定义一次组件并导入到任何地方,那么可以,创建一个shared.material.module并导入到所有需要它们的延迟加载组件中。

如果您的目标是加载尽可能少的模块,则可以将所需的确切材料模块导入每个lazy.module惰性组件中。

第三个选择是在中间某个地方相遇,并拥有一个通用的材料模块核心,core.material.module可以导入到所有模块中,如果仅由少数几个部件使用/不经常使用,则可以根据需要导入其他模块