最后我想在应用程序中引入不同的 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 图标(非免费)导入应用程序的最佳方式。