Angular NgModule 中的 declarations 和 exports定义
我在app.component.ts的template文件里試圖使用另一個Component時,遇到如下錯誤消息:
app-parent-child is not a known element:
在parent.module.ts定義里,檢查exports區域里是否包含了selector app-parent-child對應的Angular Component:ParentChildComponent:
declarations: 定義了該NgModule的組成部分:Components, directives和pipe等。
imports:
module的imports里能導入其他module,這些被導入的module的declarations的Component也可以在發起導入的module里被使用了:
例子:
AppModule導入了ParentModule,因此其能使用后者export區域暴露的Component:
exports:
假設module A 導入了module B,則module A的declarations區域的所有Component,能使用module B的exports區域定義的Component:
父子關系有一種特點,當它在子池子找不到它的依賴性,它會去父池子里面找,這也解釋了為什么在Module中Provider的東西,你在Module當中的Component也能用,而且在父組件中Provider的東西,子組件也能用。
The NgModule used for bootstrapping uses the root injector, and can provide dependencies to any part of the app.
也就是說,AppModule(引導 module )里注冊的服務,能在該應用的任何位置被注入。
惰性加載的模塊有自己的注入器,通常它是根注入器的一個子注入器。 惰性加載的服務,其作用范圍局限于這個惰性加載模塊的注入器。 如果惰性加載模塊也提供了 UserService,則任何在該模塊的上下文中創建的組件(比如通過路由導航)都會獲得該服務的一個局部實例, 而不是根注入器中的全局實例。 而外部模塊中的組件仍然會使用由它們的注入器提供的實例。
可聲明對象必須屬于也只能屬于一個模塊。 如果你嘗試把同一個類聲明在多個模塊中,那么編譯器就會報錯。 要注意不能聲明那些從其它模塊中導入的類。
默認情況下,可聲明對象是私有的。 如果 ModuleA 不導出 UserComponent,那么只有這個 ModuleA 中的組件才能使用 UserComponent。
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的Angular NgModule 中的 declarations 和 exports定义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Could not find an Ng
- 下一篇: STM32单片机介绍_单片机智能控制DI