NgModules 用于配置注入器和編譯器虐秦,并幫你把那些相關(guān)的東西組織在一起囊颅。
NgModule 是一個帶有@NgModule
裝飾器的類。NgModule
的參數(shù)是一個元數(shù)據(jù)對象,用于描述如何編譯組件的模板傍妒,以及如何在運行時創(chuàng)建注入器。 它會標(biāo)出該模塊自己的組件和屎、指令和管道惹盼,通過exports
屬性公開其中的一部分,以便外部組件使用它們惑灵。NgModule
還能把一些服務(wù)提供商添加到應(yīng)用的依賴注入器中山上。
NgModule 元數(shù)據(jù)
declarations(可聲明對象表) —— 那些屬于本 NgModule 的組件、指令英支、管道佩憾。
exports(導(dǎo)出表) —— 那些能在其它模塊的組件模板中使用的可聲明對象的子集。
imports(導(dǎo)入表) —— 那些導(dǎo)出了本模塊中的組件模板所需的類的其它模塊干花。
providers —— 本模塊向全局服務(wù)中貢獻的那些服務(wù)的創(chuàng)建器妄帘。 這些服務(wù)能被本應(yīng)用中的任何部分使用。(你也可以在組件級別指定服務(wù)提供商池凄,這通常是首選方式抡驼。)公用
bootstrap —— 應(yīng)用的主視圖,稱為根組件肿仑。它是應(yīng)用中所有其它視圖的宿主致盟。只有根模塊才應(yīng)該設(shè)置這個 bootstrap 屬性。
NgModule 和組件
NgModule 為其中的組件提供了一個編譯上下文環(huán)境柏副。根模塊總會有一個根組件勾邦,并在引導(dǎo)期間創(chuàng)建它。 但是割择,任何模塊都能包含任意數(shù)量的其它組件眷篇,這些組件可以通過路由器加載,也可以通過模板創(chuàng)建荔泳。那些屬于這個 NgModule 的組件會共享同一個編譯上下文環(huán)境蕉饼。組件及其模板共同定義視圖。組件還可以包含視圖層次結(jié)構(gòu)玛歌,它能讓你定義任意復(fù)雜的屏幕區(qū)域昧港,可以將其作為一個整體進行創(chuàng)建、修改和銷毀支子。 一個視圖層次結(jié)構(gòu)中可以混合使用由不同 NgModule 中的組件定義的視圖创肥。 這種情況很常見,特別是對一些 UI 庫來說。
當(dāng)你創(chuàng)建一個組件時叹侄,它直接與一個叫做宿主視圖的視圖關(guān)聯(lián)起來巩搏。 宿主視圖可以是視圖層次結(jié)構(gòu)的根,該視圖層次結(jié)構(gòu)可以包含一些內(nèi)嵌視圖趾代,這些內(nèi)嵌視圖又是其它組件的宿主視圖贯底。 這些組件可以位于相同的 NgModule 中,也可以從其它 NgModule 中導(dǎo)入撒强。 樹中的視圖可以嵌套到任意深度