如何声明 angular Material 模块的数组?

How to declare an Array of angular Material modules?

诸如之类的问题,以及各种博文,推荐一个单独的模块导入你的Material模块并立即导出,然后将该模块导入你的app.module.ts以防止污染应用程序模块。

在我看来,如果进口始终与出口相同,那么我宁愿只申报一次。所以,我使用

const materialModules = [
  MatButtonModule, MatIconModule, MatFormFieldModule, MatInputModule, MatNativeDateModule, MatDatepickerModule,
  MatCheckboxModule, MatSidenavModule, MatToolbarModule,
];

@NgModule({
  imports: materialModules,
  exports: materialModules,
})

export class MaterialModule{}

这很好用,但我想给 materialModules 一个类型。应该是什么?

嗯,这些模块被传递给导入数组,因为导入采用以下类型:

(any[] | Type<any> | ModuleWithProviders<{}>)

除上述类型外,我们没有其他选择。

所以你可以做到

 const materialModules : (any[] | Type<any> | ModuleWithProviders<{}>) = [
  MatButtonModule, MatIconModule, MatFormFieldModule, MatInputModule, MatNativeDateModule, MatDatepickerModule,
  MatCheckboxModule, MatSidenavModule, MatToolbarModule,
];

但对我来说并没有增加多少好处。