應(yīng)用都是模塊化的,Angular有自己的模塊系統(tǒng)。通常app.module.ts定義一個(gè)應(yīng)用的根模塊,一個(gè)應(yīng)用應(yīng)該至少有一個(gè)根模塊(root module)。對(duì)于一個(gè)簡(jiǎn)單的應(yīng)用來(lái)說(shuō),一個(gè)根模塊足矣,但對(duì)于一個(gè)復(fù)雜的應(yīng)用則可能需要添加特性模塊,而且不止一個(gè)。
Angular模塊是一個(gè)帶有@NgModule裝飾器函數(shù)的類。Angular有很多裝飾器,這些裝飾器將元數(shù)據(jù)附加到類上這樣模塊就會(huì)知道這些類的含義以及運(yùn)作方式。
下面是@NgModule裝飾器函數(shù)接收的元數(shù)據(jù)中重要的幾個(gè)屬性:
- declarations: 聲明模塊所擁有的視圖類,Angular有三種視圖類:component、directive和pipe。
- exports: declarations的子集。作用是導(dǎo)出類以便其他模塊的組件模板使用。
- imports: 導(dǎo)入外部模塊的類以便在此模塊中聲明的模板組件使用。
- providers: 服務(wù)提供商。模塊會(huì)將這些服務(wù)加入全局服務(wù)集,這樣在app的任何位置都可以使用加入的服務(wù)。
- bootstrap: 應(yīng)用的主視圖,包含app的其他視圖。只有根模塊可以設(shè)置這個(gè)屬性。
下面是一個(gè)最簡(jiǎn)單基本的根模塊:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
imports: [ BrowserModule ],
declarations: [ AppComponent ], //在這里加自己定義的組件、指令或管道
bootstrap: [ AppComponent ]
})
export class AppModule{}