Rot*_*ese 5 typescript ng-modules angular
好吧,我正在按照以下基础结构构建我的项目:
但是有一点我还不够清楚。
据我所知,HttpClientModule应该在CoreModule因为好吧,...它提供了HttpClient向服务器发出 HTTP 请求的服务。
现在,该imports数组允许 Angular 模块使用其他模块中提供的功能,并且该exports数组允许 Angular 模块公开其某些功能。
我有这个CoreModule:
@NgModule({
imports: [
BrowserAnimationsModule,
HttpClientModule,
RouterModule.forRoot(routes, {
enableTracing: true
})
],
exports: [
RouterModule
]
})
export class CoreModule {
}
Run Code Online (Sandbox Code Playgroud)
现在,既然 myCoreModule是在my中导入的AppModule,那么HttpClientModule和不应该也BrowserAnimationsModule被导出吗?就像RouterModule.
我看到了CoreModule并且SharedModule喜欢某种桥梁。
该SharedModule让我更有意义:
@NgModule({
imports: [
MatButtonModule
],
exports: [
MatButtonModule
]
})
export class SharedModule {
}
Run Code Online (Sandbox Code Playgroud)
在SharedModule进口MatButtonModule,然后导出它,以便其他模块可以使用它。
不CoreModule应该是一样的吗?因为应用程序运行良好;但是,我处于开发模式。
希望我足够清楚,有人可以帮助我解决这个疑问。
不,exportsNgModule的数组不应该包含没有组件、指令或管道(如HttpClientModule)的模块。
从 NgModule 导出某些东西的目的是让其他模块(或其他模块中的东西)可以访问该模块的组件、指令和管道——有时还可以让其他模块访问(即重新导出)组件,为了方便起见,来自其他模块的指令和管道。
您CoreModule将列表RouterModule作为导出,以便任何导入您的内容CoreModule都可以使用routerLink属性指令(除其他外)。也就是说,RouterModule导出组件、指令和/或管道。
由于HttpClientModule没有声明任何组件、指令或管道,因此将其列为 NgModule 导出没有任何价值。
这些Angular 指南 NgModule 常见问题也可能有用:
我个人认为 BrowserAnimationsModule 可以而且应该导入到 AppModule 本身中。
如果所有使用 HttpClient 的服务都在 CoreModule 本身中,则无需导出 HttpClientModule。
即使您确实在其他模块中使用 HttpClient,您也可以在该特定模块中导入 HttpClientModule,或者在 AppModule 中执行此操作(延迟加载的模块除外)。
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |