国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

angular 服務隨記小結

2024-05-06 15:39:49
字體:
來源:轉載
供稿:網友

依賴注入

創建服務需要用到Injectable,@Injectable() 裝飾器把類標記為可供注入的服務,不過在使用該服務的 provider 配置好 Angular 的依賴注入器之前,Angular 實際上無法將其注入到任何位置。

provider告訴注入器如何創建該服務,可以通過設置元數據來配置注入器(3種方式):

在服務本身的 @Injectable() 裝飾器中。 在 NgModule 的 @NgModule() 裝飾器中。 在組件的 @Component() 裝飾器中。

@Injectable() 裝飾器具有一個名叫 providedIn 的元數據選項,在這里指定把被裝飾類的provider放到 root 注入器中,或某個特定 NgModule 的注入器中。

@NgModule() 和 @Component() 裝飾器都有用一個 providers 元數據選項,在那里你可以配置 NgModule 級或組件級的注入器。

注入器與服務實例

在某個注入器范圍內,服務是單例的。應用只有一個根注入器,angular具有多級注入器系統,以為者下級注入器可以創建自己的服務實例。

每當 Angular 創建一個在 @Component() 中指定了 providers 的組件實例時,它也會為該實例創建一個新的子注入器。 類似的,當在運行期間加載一個新的 NgModule 時(即lazy module),Angular 也可以為它創建一個擁有自己的提供商的注入器。

借助注入器繼承機制,仍然可以把全應用級的服務注入到這些組件中。 組件的注入器是其父組件注入器的子節點,也是其父節點的父節點的后代,以此類推,直到應用的根注入器為止。 Angular 可以注入該繼承譜系中任何一個注入器提供的服務。

模塊化編程時,service、component、pipe等最好都放在module中,需要引入這些服務時,通過導入module來引用,不要直接import service 和component,這不符合模塊化思想。

多級注入系統

應用程序中有一個與組件樹平行的注入器樹,對于在什么級別上注入會最終導致:

最終包的大小 服務的范圍 服務的生命周期

當在服務自身的@Injectable()裝飾器中指定provider時,CLI生產模式所用的優化工具可以進行搖樹優化,它會移除那些沒有用過的服務,搖樹優化生成的包更小。

三級provider

root級,是AppModule全局的,配置方法已提。 NgModule級,兩種方法:可以在module的@NgModule 的 provider 元數據中指定;也可以在@injectable() 的providerIn選項中指定某個模塊類

如果模塊是lazy modole,需要使用@NgModule的provider選項。

組件級為每個component實例配置自己的注入器

無論對于根級注入器還是模塊級注入器,服務實例的生存期都和應用或模塊本身相同。Angular 可以把這個服務實例注入到任何需要它的類中(即app內是單例的)。Angular 只能把相應的服務注入到該組件實例或其下級組件實例中,而不能把這個服務實例注入到其它地方(即組件內并不是單例的)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 曲沃县| 墨竹工卡县| 图木舒克市| 渝北区| 荥经县| 奉化市| 杭锦后旗| 广水市| 金坛市| 商城县| 高要市| 大余县| 九江市| 庐江县| 定远县| 若羌县| 平昌县| 北京市| 广德县| 星子县| 贞丰县| 于都县| 鹿邑县| 小金县| 通江县| 雷山县| 丰县| 泗阳县| 茌平县| 鄱阳县| 富裕县| 菏泽市| 安图县| 武清区| 乌拉特前旗| 天长市| 宁津县| 浠水县| 衡山县| 修文县| 晴隆县|