📅  最后修改于: 2023-12-03 15:13:23.049000             🧑  作者: Mango
在 Angular 2 中,模块是一种组织代码的方式。模块将一些相关的组件、指令、管道等打包在一起,提供给应用程序使用。模块的作用类似于命名空间和模块化 JavaScript 中的模块。
要创建一个模块,需要使用 @NgModule
装饰器来修饰一个类。@NgModule
的参数是一个元数据对象,用于描述模块的相关信息。
一个最基本的模块可以只包含一个 declarations
数组,其中列出模块中包含的组件、指令、管道等。例如:
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
@NgModule({
declarations: [ AppComponent ]
})
export class AppModule { }
在上面的例子中,AppModule
是一个模块类。模块中只包含了一个 declarations
数组,其中列出了组件 AppComponent
。
一个模块可以导入其他模块,以便使用其他模块中提供的组件、指令、服务等。要导入一个模块,需要在 @NgModule
的 imports
属性中列出需要导入的模块。例如:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
declarations: [ AppComponent ],
imports: [ BrowserModule ]
})
export class AppModule { }
在上面的例子中,AppModule
导入了 BrowserModule
模块,以便使用浏览器相关的功能。
一个模块可以通过 exports
属性将模块中的组件、指令等导出给其他模块使用。例如:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { MyDirective } from './my.directive';
@NgModule({
declarations: [ AppComponent, MyDirective ],
imports: [ BrowserModule ],
exports: [ AppComponent, MyDirective ]
})
export class MyModule { }
在上面的例子中,MyModule
导出了 AppComponent
和 MyDirective
,以便其他模块可以使用它们。
一个模块可以通过 providers
属性提供服务。
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { MyService } from './my.service';
@NgModule({
imports: [ HttpClientModule ],
providers: [ MyService ]
})
export class MyModule { }
在上面的例子中,MyModule
导入了 HttpClientModule
模块,并提供了一个名为 MyService
的服务。
模块是 Angular 2 中组织代码的基本单位。模块可以导入其他模块,导出模块中的组件、指令等,提供服务等。创建一个模块需要使用 @NgModule
装饰器。