模块是具有个组件的东西。它将它们包装起来,以便您可以导入和管理它们。
请注意,当您制作组件时,您可以在构造函数中放置任何装饰为 @Injectable 的内容:
@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
constructor(private myService: MyService) { }
ngOnInit() {
}
}
神奇的是,您将有一个myService 可以使用。这是依赖注入,它内置在 Angular 中——但它在Module 级别上进行管理。在您的模块中,您导入您希望能够使用的其他模块:
imports: [
BrowserModule,
FormsModule
],
定义你的模块包括什么:
declarations: [
AppComponent,
HeroesComponent,
MyService
],
导出任何组件(以便其他模块可以导入它们)
exports: [
HeroesComponent
],
它们有助于将应用程序组织成功能块。组件是告诉 Angular 如何渲染某些东西的东西。模块将组件、管道、服务等组成“块”,可以通过角度编译或导入并供其他人使用。
编辑地址评论
回答您关于HttpClient 的具体问题。 HttpClient 是您用来执行操作的服务。 HttpClientModule 是您导入模块的模块,因此您可以使用它包含的服务。
你导入模块:
@NgModule({
imports: [
BrowserModule,
// Include it under 'imports' in your application module
// after BrowserModule.
HttpClientModule,
],
})
并且使用服务:
@Component(...)
export class MyComponent implements OnInit {
// Inject HttpClient into your component or service.
constructor(private http: HttpClient) {}
...
}
HttpClientModule 包含HttpClient 工作所需的所有内容,并将其打包以便您可以在自己的项目中使用它。
这个特定的模块只封装了一个服务,但该模块可以包含一堆相关的服务、组件、管道或指令。例如,RouterModule 允许您使用 RouterOutlet 和 RouterLink 指令。