目前我有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组件。
显然,其中的某些组件将在许多功能模块中使用。
问题是:如何在特征模块中加载所需的材料组件?
MyMaterialModule
是shared
模块的子模块吗?
答案 0 :(得分:3)
如果只想定义一次组件并导入到任何地方,那么可以,创建一个shared.material.module
并导入到所有需要它们的延迟加载组件中。
如果您的目标是加载尽可能少的模块,则可以将所需的确切材料模块导入每个lazy.module
惰性组件中。
第三个选择是在中间某个地方相遇,并拥有一个通用的材料模块核心,core.material.module
可以导入到所有模块中,如果仅由少数几个部件使用/不经常使用,则可以根据需要导入其他模块