Angular中的裝飾器是一個(gè)函數(shù),它將元數(shù)據(jù)添加到類(lèi)响鹃、類(lèi)成員(屬性、方法)和函數(shù)參數(shù)案训。
用法:要想應(yīng)用裝飾器买置,把它放到被裝飾對(duì)象的上面或左邊。
Angular 使用自己的一套裝飾器來(lái)實(shí)現(xiàn)應(yīng)用程序各部件之間的相互操作
這個(gè)地方是前面幾個(gè)模塊模塊强霎、指令忿项、組件、依賴(lài)注入等從裝飾器這個(gè)側(cè)面的整理
你需要做的:
1.搞清楚理解TypeScript的裝飾器的原理
2.搞清楚這里面每一個(gè)裝飾器的作用城舞,解決的什么問(wèn)題轩触,應(yīng)用場(chǎng)景
類(lèi)裝飾器
Angular 有很多裝飾器,它們負(fù)責(zé)把元數(shù)據(jù)附加到類(lèi)上家夺,以了解那些類(lèi)的設(shè)計(jì)意圖以及它們應(yīng)如何工作脱柱。
類(lèi)裝飾器應(yīng)用于類(lèi)構(gòu)造函數(shù),可以用來(lái)監(jiān)視秦踪,修改或替換類(lèi)定義褐捻。
類(lèi)裝飾器表達(dá)式會(huì)在運(yùn)行時(shí)當(dāng)作函數(shù)被調(diào)用掸茅,類(lèi)的構(gòu)造函數(shù)作為其唯一的參數(shù)椅邓。
@Component標(biāo)記類(lèi)作為組件并收集組件配置元數(shù)據(jù)(繼承Directive)
@Directive標(biāo)記類(lèi)作為指令并收集組件配置元數(shù)據(jù)
聲明當(dāng)前類(lèi)是一個(gè)指令,并提供關(guān)于該指令的元數(shù)據(jù)
@Pipe
聲明當(dāng)前類(lèi)是一個(gè)管道昧狮,并且提供關(guān)于該管道的元數(shù)據(jù)
@Injectable標(biāo)記元數(shù)據(jù)并可以使用Injector注入器注入
聲明當(dāng)前類(lèi)有一些依賴(lài)景馁,當(dāng)依賴(lài)注入器創(chuàng)建該類(lèi)的實(shí)例時(shí),這些依賴(lài)應(yīng)該被注入到構(gòu)造函數(shù)中逗鸣。
@NgModule
NgModule是一個(gè)裝飾器函數(shù)合住,它接收一個(gè)用來(lái)描述模塊屬性的元數(shù)據(jù)對(duì)象绰精。其中最重要的屬性是:
declarations?-聲明本模塊中擁有的視圖類(lèi)。(Angular有三種視圖類(lèi):組件透葛、指令和管道笨使?。)
exports?- declarations的子集僚害,可用于其它模塊的組件模板硫椰。Ps:模塊導(dǎo)出聲明
imports?-本模塊聲明的組件模板需要的類(lèi)所在的其它模塊。Ps:模塊導(dǎo)入聲明
providers?-服務(wù)的創(chuàng)建者萨蚕,并加入到全局服務(wù)列表中靶草,可用于應(yīng)用任何部分。岳遥?奕翔???完全沒(méi)懂說(shuō)啥
bootstrap?-指定應(yīng)用的主視圖(稱(chēng)為根組件),它是所有其它視圖的宿主澎现。只有根模塊才能設(shè)置bootstrap屬性薄辅。
屬性裝飾器
屬性裝飾器表達(dá)式會(huì)在運(yùn)行時(shí)當(dāng)作函數(shù)被調(diào)用,
傳入下列2個(gè)參數(shù):
對(duì)于靜態(tài)成員來(lái)說(shuō)是類(lèi)的構(gòu)造函數(shù)牺勾,對(duì)于實(shí)例成員是類(lèi)的原型對(duì)象。
成員的名字。
@Input
聲明一個(gè)輸入屬性纫普,以便我們可以通過(guò)屬性綁定更新它。
@Output
聲明一個(gè)輸出屬性好渠,以便我們可以通過(guò)事件綁定進(jìn)行訂閱昨稼。
@Hostbinding把宿主元素的屬性(比如CSS類(lèi))綁定到指令/組件的屬性
@HostListener
通過(guò)指令/組件的方法訂閱宿主元素的事件
@ContentChild配置一個(gè)內(nèi)容查詢(xún)
@ViewChild配置一個(gè)視圖查詢(xún)
@ContentChildren配置多個(gè)個(gè)內(nèi)容查詢(xún)(返回QueryList類(lèi)型)
@ViewChildren配置多個(gè)視圖查詢(xún)(返回QueryList類(lèi)型)
參數(shù)裝飾器
參數(shù)裝飾器表達(dá)式會(huì)在運(yùn)行時(shí)當(dāng)作函數(shù)被調(diào)用,
傳入下列3個(gè)參數(shù):
對(duì)于靜態(tài)成員來(lái)說(shuō)是類(lèi)的構(gòu)造函數(shù)拳锚,對(duì)于實(shí)例成員是類(lèi)的原型對(duì)象假栓。
成員的名字。
參數(shù)在函數(shù)參數(shù)列表中的索引霍掺。
注意參數(shù)裝飾器只能用來(lái)監(jiān)視一個(gè)方法的參數(shù)是否被傳入匾荆。
@Inject指定依賴(lài)關(guān)系的參數(shù)裝飾器(一般用來(lái)注入被標(biāo)記Injectable的類(lèi))
@Optional將依賴(lài)項(xiàng)標(biāo)記為可選的參數(shù)元數(shù)據(jù). 如果沒(méi)有找到依賴(lài)關(guān)系,注射器將提供null
@Self指定注射器只能從本身檢索依賴(lài)關(guān)系
@SkipSelf指定注射器只能從父類(lèi)檢索依賴(lài)關(guān)系
@Host按照依賴(lài)關(guān)系來(lái)檢索
ps:內(nèi)容來(lái)自百度整理 ?不對(duì)的地方希望大神指出