0

最后我想在应用程序中引入不同的 NgModule。目前我们有一个AppModule拥有一切的大平台,对于我们的新功能/页面,我们想要创建一个新模块。然而,考虑到共享模块、组件、字体很棒的图标,问题就出现了。分享它们的最佳方式是什么?

这是当前的一个片段AppModule

@NgModule({
  declarations: [
    AppComponent,
   ... a lot more components here
  ],
  imports: [
    BrowserModule,
    .. more imports here
  ],
  providers: (
    [
      TitleCasePipe,
      TranslocoDatePipe,
    ]
  )
  bootstrap: [AppComponent],
})
export class AppModule {
 

  constructor(library: FaIconLibrary) {
   //  FONTAWESOME_ICONS is a const array with long list of icons
    FONTAWESOME_ICONS.forEach((icon) => {
      library.addIcons(icon)
    })
  }
}

我知道这很丑。现在有了新模块VendorsModule,我需要将共享组件、模块导出到 aSharedModule中,这样我就可以将它导入到AppModule和 中VendorsModule。这是SharedModule我尝试过的

@NgModule({
  declarations: [
    DomainComponent,
    .. more components
  ],
  imports: [
    ApiModule,
    .. more modules
  ],
  providers: (
    [
      TitleCasePipe,
      TranslocoDatePipe,
    ]
  )
  exports: [
   .. all the shared components and modules
  ],
})
export class SharedModule {

  constructor(library: FaIconLibrary) {
    FONTAWESOME_ICONS.forEach((icon) => {
      library.addIcons(icon)
    })
  }
}

这里是AppModule使用后SharedModule

@NgModule({
  declarations: [
    .. other app components
  ],
  imports: [SharedModule, VendorsModule, BrowserModule],
  bootstrap: [AppComponent],
})
export class AppModule {}

这是VendorsModule

@NgModule({
  declarations: [VendorsComponent],
  imports: [SharedModule],
  exports: [VendorsComponent],
})
export class VendorsModule {}

我担心的是,必须SharedModule在每个新引入的模块中导入是否有效(因为我肯定需要一些共享组件、图标),即使SharedModule包含可能与该模块无关的组件和 fontawesome 图标。

我看过几篇关于共享模块的文章,但它们似乎只介绍了基本用例。

这更像是一个附带问题,我不确定这是否是将 fontawesome 图标(非免费)导入应用程序的最佳方式。

4

0 回答 0