Angular?模塊封裝概念常見的錯誤分析理解
Angular引入模塊封裝概念
Angular 以類似于 ES 模塊的方式引入了模塊封裝的概念。
它基本上意味著可聲明的類型——組件、指令和管道——只能由在該模塊內(nèi)聲明的組件使用。
例如,如果我嘗試使用下面的代碼在 App 模塊的 App
組件內(nèi)使用 A
模塊中的 a-comp
:
@Component({ selector: 'my-app', template: ` <h1>Hello {{name}}</h1> <a-comp></a-comp> ` }) export class AppComponent { }
錯誤消息
Template parse errors: ‘a-comp’ is not a known element
這是因?yàn)?App 模塊中沒有聲明 a-comp。 如果我想使用這個組件,我需要導(dǎo)入定義這個組件的模塊。解決方案如下:
@NgModule({ imports: [..., AModule] }) export class AppModule { }
這就是封裝發(fā)揮作用的地方:A 模塊必須通過將 a-comp 添加到 exports 數(shù)組來將其聲明為在其他 module 內(nèi)可用:
@NgModule({ ... declarations: [AComponent], exports: [AComponent] }) export class AModule { }
大多數(shù) Angular 新手認(rèn)為 Providers 也有封裝,這種想法是錯誤的??梢栽趹?yīng)用程序內(nèi)的任何位置訪問在任何非延遲加載模塊中聲明的 Providers.
Modules hierarchy
關(guān)于 imported modules
的最大困惑是開發(fā)人員認(rèn)為這些被導(dǎo)入的 Modules 在應(yīng)用運(yùn)行時維護(hù)了一種層次結(jié)構(gòu),并且假設(shè)導(dǎo)入其他模塊的模塊成為被導(dǎo)入模塊的父模塊。
然而,事實(shí)并非如此。所有模塊在編譯階段合并。因此,導(dǎo)入的模塊和導(dǎo)入的模塊之間沒有層次關(guān)系。
所需命名空間之一被定義為默認(rèn)命名空間。 此命名空間的控制標(biāo)記不需要前綴。
<View>
標(biāo)簽是必需的,在上面的示例中,核心命名空間在第一行定義。 當(dāng)然開發(fā)人員可以定義任何名稱。 例如,為了使標(biāo)簽名稱更短,還可以使用 c
而不是 core
.
以上就是Angular 模塊封裝概念常見的錯誤分析理解的詳細(xì)內(nèi)容,更多關(guān)于Angular 模塊封裝概念分析的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Angular2實(shí)現(xiàn)自定義雙向綁定屬性
本篇文章主要介紹了Angular 2實(shí)現(xiàn)自定義 雙向綁定 屬性,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03AngularJS使用ui-route實(shí)現(xiàn)多層嵌套路由的示例
這篇文章主要介紹了AngularJS使用ui-route實(shí)現(xiàn)多層嵌套路由的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01AngularJS基礎(chǔ) ng-disabled 指令詳解及簡單示例
本文主要介紹AngularJS ng-disabled 指令,這里幫大家整理了ng-disabled指令的基礎(chǔ)指令,并附示例代碼,有需要的小伙伴參考下2016-08-08解決angular2在雙向數(shù)據(jù)綁定時[(ngModel)]無法使用的問題
今天小編就為大家分享一篇解決angular2在雙向數(shù)據(jù)綁定時[(ngModel)]無法使用的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09angular.js+node.js實(shí)現(xiàn)下載圖片處理詳解
這篇文章主要介紹了angular.js+node.js實(shí)現(xiàn)下載圖片處理的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03AngularJs 延時器、計(jì)時器實(shí)例代碼
這篇文章主要介紹了AngularJs 延時器、計(jì)時器實(shí)例代碼,需要的朋友可以參考下2017-09-09