Angular2-模块与组件有何不同



../src/app/app.module.ts的以下代码中,

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';

组件包括:

  • 视图(../src/app/app.component.html)

  • 逻辑(../src/app/app.component.ts)

  • 样式(../src/app/app.component.css)

Angular应用程序是一个组件树。好的组件具有高内聚性,即每个组件只包含具有相关功能的元素。它们也被很好地封装并且松散耦合


模块与组件有何不同?

组件只是一个带有@Component()注释的类。请注意,组件可能会引用.html和.css文件,当然不是强制性的。组件模板很可能直接"内联"在组件配置中,或者对于给定的组件可能根本没有任何html模板。

模块是Angular应用程序(可能还有其他类和接口)的结构元素。它也是带有@NgModule()注释的"只是一个类"。

它充当组件、指令、服务、管道等的逻辑"容器",帮助您更好地构建整体源代码。

你可以看看这个现存的问题:What';s Angular组件和模块之间的区别

模块是具有组件的东西。它将它们封装起来,以便您可以导入和管理它们。

注意,当你制作一个组件时,你可以把任何装饰为@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是您导入模块的模块,因此您可以使用它所包含的service

您导入模块:

@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允许您使用RouterOutletRouterLink指令。

angular中的

Module是一组组件、服务、过滤器或其他一些较小的模块,或者我们可以说您将所有这些导入到哪里,以便稍后在应用程序中使用,以备将来使用。在单个应用程序中,可能存在一个或多个模块。

然而,组件控制称为视图的屏幕补丁。您可以在类中定义组件的应用程序逻辑——它为支持视图所做的操作。类通过属性和方法的API与视图交互。

有关更多详细信息,请参阅本指南:

https://angular.io/guide/architecture

最新更新