【问题标题】:How to declare an Array of angular Material modules?如何声明一个角度材料模块数组?
【发布时间】:2021-10-14 16:42:48
【问题描述】:

this one等问题,以及各种博文,推荐一个单独的模块来导入你的Material Modules并立即导出它们,然后将该模块导入你的app.module.ts,以防止污染应用模块。

在我看来,如果进口总是与出口相同,那么我宁愿只声明一次。所以,我用

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

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

export class MaterialModule{}

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

【问题讨论】:

  • 材质模块没有实现通用接口,所以我猜类型只能是any[]
  • 谢谢 (+1)。它不会帮助 IDE,这是我通过添加类型来寻找的。但是你帮了我。

标签: angular angular-material


【解决方案1】:

好吧,这些模块被传递给导入数组,并且由于导入采用以下类型:

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

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

所以你可以这样做

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

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

【讨论】:

  • But to me it doesn't add much benefit.”。不,它没有。我只是想在可能的地方显式声明类型,即使在不需要时也是如此。有时这可以帮助 IDE。你确实帮助了我。谢谢,点赞并接受答案
猜你喜欢
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多