gpt4 book ai didi

Angular - HttpClientModule 应该位于 CoreModule 的 Exports 数组中吗?

转载 作者:行者123 更新时间:2023-12-03 00:29:51 26 4
gpt4 key购买 nike

嗯,我正在按照以下基础架构构建我的项目:

  • 功能模块。
  • 核心模块。
  • 共享模块。

但是有一点我还不太清楚。

据我所知,HttpClientModule 应该位于 CoreModule 中,因为...它提供了 HttpClient 服务来使向服务器发出 HTTP 请求。

现在,imports 数组允许 Angular 模块使用其他模块中提供的功能,而 exports 数组允许 Angular 模块公开其部分功能。

我的CoreModule中有这个:

@NgModule({
imports: [
BrowserAnimationsModule,
HttpClientModule,
RouterModule.forRoot(routes, {
enableTracing: true
})
],
exports: [
RouterModule
]
})
export class CoreModule {
}

现在,由于我的 CoreModule 已导入到我的 AppModule 中,因此 HttpClientModuleBrowserAnimationsModule 不应该是也导出了?就像RouterModule一样。

我看到 CoreModuleSharedModule 就像某种桥梁。

SharedModule 对我来说更有意义:

@NgModule({
imports: [
MatButtonModule
],
exports: [
MatButtonModule
]
})
export class SharedModule {
}

SharedModule 导入 MatButtonModule,然后将其导出,以便其他模块可以使用它。

CoreModule 不应该是同样的方式吗?因为App运行良好;但是,我处于开发模式。

希望我说得足够清楚,有人可以帮助我消除这个疑问。

最佳答案

不,NgModule 的 exports 数组不应包含没有组件、指令或管道的模块(例如 HttpClientModule)。

从 NgModule 导出某些内容的目的是让其他模块(或其他模块中的内容)访问此模块的组件、指令和管道,有时还为其他模块提供访问权限为了方便起见,从其他模块访问(即重新导出)组件、指令和管道。

您的 CoreModuleRouterModule 列为导出,以便导入您的 CoreModule 的任何内容都可以使用 routerLink 属性指令(除其他事项外)。也就是说,RouterModule 导出组件、指令和/或管道。

由于 HttpClientModule 未声明任何组件、指令或管道,因此将其列为 NgModule 导出没有任何值(value)。

这些Angular guide NgModule FAQs可能也有用:

关于Angular - HttpClientModule 应该位于 CoreModule 的 Exports 数组中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50261657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com