Angular 8 - 将所有材质模块导入主应用程序模块是否比在不同模块中导入单个材质模块更好?

ali*_*990 3 angular-material angular angular-material-7 angular8

将材质模块导入 Angular 8 项目的最佳方法是什么?是通过将material.module.ts导入到app主模块然后在其他模块中使用它:

import { NgModule } from '@angular/core';

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

@NgModule({
  imports: [
    MatButtonModule,
    MatMenuModule,
    MatToolbarModule,
    MatIconModule,
    MatCardModule
  ],
  exports: [
    MatButtonModule,
    MatMenuModule,
    MatToolbarModule,
    MatIconModule,
    MatCardModule
  ]
})
export class MaterialModule {}
Run Code Online (Sandbox Code Playgroud)

还是直接导入各个模块中主要用到的材质模块?

例如,如果我只使用mat-cardin ProductsModule,我只需导入MatCardModule产品模块并完成它。

Sid*_*era 7

这完全取决于您在应用程序中使用 Angular Material 公开的所有组件的位置。

如果只有某些模块中的某些组件使用 Angular Material 公开的组件,则将这些模块导入到这些组件所属的模块中是有意义的。

例如:为了论证起见,假设您的应用程序具有三个模块:CartModuleCheckoutModuleProfileModule。并且只有您CartModule使用 Angular Material 组件之一。另外,如果这CartModule是延迟加载的话。在这种情况下,将特定的 Angular Material 模块导入到CartModule.


然而,在大多数情况下情况并非如此。

在大多数情况下,为了保持一致的外观和感觉,我们通常倾向于在整个应用程序中使用 Angular Material 模块公开的大量组件。因此,在这种情况下,为了使其更加统一和易于管理,我们通常会创建一个AppMaterialModule您在问题本身中所做的方式。然后我们将import这个模块放在我们想要使用这些组件的模块中。如果我们要在应用程序的不同模块中使用这些组件,我们通常会导入AppMaterialModuleSharedModule从那里导出它。这样,我们作为 一部分公开的组件AppMaterialModule就可以在整个应用程序中访问。

希望这能消除您的疑虑。