W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
宏觀來(lái)講,NgModule
是組織 Angular 應(yīng)用的一種方式,它們通過(guò) @NgModule
裝飾器中的元數(shù)據(jù)來(lái)實(shí)現(xiàn)這一點(diǎn)。 這些元數(shù)據(jù)可以分成三類:
靜態(tài)的:編譯器配置,用于告訴編譯器指令的選擇器并通過(guò)選擇器匹配的方式?jīng)Q定要把該指令應(yīng)用到模板中的什么位置。它是通過(guò) declarations
數(shù)組來(lái)配置的。
運(yùn)行時(shí):通過(guò) providers
數(shù)組提供給注入器的配置。
組合/分組:通過(guò) imports
和 exports
數(shù)組來(lái)把多個(gè) NgModule
放在一起,并讓它們可用。
@NgModule({
// Static, that is compiler configuration
declarations: [], // Configure the selectors
entryComponents: [], // Generate the host factory
// Runtime, or injector configuration
providers: [], // Runtime injector configuration
// Composability / Grouping
imports: [], // composing NgModules together
exports: [] // making NgModules available to other parts of the app
})
接下來(lái)對(duì) @NgModule 元數(shù)據(jù)中屬性的進(jìn)行匯總:
declarations
。屬于該模塊的可聲明對(duì)象(組件、指令和管道)的列表。
NgModule
環(huán)境中編譯 —— 模板的組件是在該 NgModule
內(nèi)部聲明的,它會(huì)使用如下規(guī)則來(lái)確定這組選擇器:declarations
中的所有指令選擇器。NgModule
中導(dǎo)出的那些指令的選擇器。providers
。依賴注入提供者的列表。
UserService
,那么在這個(gè)模塊的上下文中創(chuàng)建的任何組件(比如在路由器導(dǎo)航時(shí)),都會(huì)獲得這個(gè)服務(wù)的本模塊內(nèi)實(shí)例,而不是來(lái)自應(yīng)用的根注入器的實(shí)例。imports
。Folded
)進(jìn)本模塊中的其它模塊。折疊的意思是從被導(dǎo)入的模塊中導(dǎo)出的那些軟件資產(chǎn)同樣會(huì)被聲明在這里。CommonModule
(也可能從BrowserModule
中間接導(dǎo)入)時(shí),組件才能使用NgIf
和NgFor
指令。CommonModule
中導(dǎo)入很多標(biāo)準(zhǔn)指令,不過(guò)也有些常用的指令屬于其它模塊。 比如,你只有導(dǎo)入了 Angular 的 FormsModule
時(shí)才能使用 [(ngModel)]
。exports
。可供導(dǎo)入了自己的模塊使用的可聲明對(duì)象(組件、指令、管道類)的列表。
UserComponent
時(shí),其它模塊中的組件才能使用本模塊中的 UserComponent
。UserComponent
,那么就只有本模塊中的組件才能使用 UserComponent
。CommonModule
而能夠使用 ngIf
。 模塊 B
必須自己導(dǎo)入 CommonModule
。exports
列表中,這時(shí),另一個(gè)模塊的所有公共組件、指令和管道都會(huì)被導(dǎo)出。A
重新導(dǎo)出了 CommonModule
,而模塊 B
導(dǎo)入了模塊 A
,那么模塊 B
就可以使用 ngIf
了 —— 即使它自己沒(méi)有導(dǎo)入 CommonModule
。bootstrap
。要自動(dòng)啟動(dòng)的組件列表。
entryComponents
中。entryComponents
。那些可以動(dòng)態(tài)加載進(jìn)視圖的組件列表。
AppComponent
。 它用作進(jìn)入該應(yīng)用的入口點(diǎn),也就是說(shuō)你通過(guò)引導(dǎo)它來(lái)啟動(dòng)本應(yīng)用。<router-outlet>
附近。entryComponents
列表中,因?yàn)樗鼈儠?huì)被隱式添加進(jìn)去。bootstrap
中的組件和路由定義中的組件添加到 entryComponents
列表。ViewComponentRef.createComponent()
的方式進(jìn)行命令式引導(dǎo)的組件仍然需要添加。entryComponents
列表中。Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: