溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Angular中依賴注入模式是什么

發(fā)布時間:2021-04-23 10:47:16 來源:億速云 閱讀:161 作者:小新 欄目:web開發(fā)

這篇文章主要介紹Angular中依賴注入模式是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Angular 依賴注入模式

依賴注入: Dependency Injection 簡稱 DI

依賴注入模式要解決的問題

開發(fā)中, 會經常遇見對象的實例化, 當多個對象之間存在依賴時, 手工實例化會特別麻煩。

如果一個對象A要依賴對象 B, 那么對象 A 不需要明確地去實例化B對象, B 會由外部機制注入進來, 對象 A 只需要聲明一個B對象就行。 這就是依賴注入要解決的問題。

與依賴注入經常同時出現(xiàn)的另一個概念叫做控制反轉。

控制反轉: Inversion of Control 簡稱 IOC, 是指將依賴的控制權從代碼的內部反轉到代碼的外部。

依賴注入控制反轉是一體兩面, 表達的是一個思想。 依賴注入側重于描述手段, 即如何實現(xiàn)控制反轉, 控制反轉側重于描述目的, 即目的是將依賴的控制權從代碼的內部反轉到代碼的外部。

相關教程推薦:《angular教程》

依賴注入模式的好處

  • 松耦合,可重用

  • 提高組件的可測試性

Angular 如何實現(xiàn)依賴注入

注入器

每個組件都有一個注入器實例, 負責注入組件需要的對象。 注入器是 Angular 提供的一個服務類。 一般情況下不用直接調用注入器的方法, 注入器會自動通過組件的 構造函數(shù)(constructor) 將組件需要的對象注入進組件。 提供器會告訴注入器如何創(chuàng)建實例。

提供器

為了讓注入器知道注入的對象如何實例化,需要指定提供器,一般情況下,我們會通過組件或模塊的 providers 屬性聲明需要提供的對象。

一般聲明方式
providers:[{provide:AService, useClass: AServivce}] <=> providers:[AService]
provide 屬性:指定了提供器的令牌(token)
useClass 屬性:表示實例化方式是 new
工廠方法聲明方式
使用 useFactory 方式實例化對象
providers:[
  {
    provide:AService, 
    useFactory: (bService: BService) => {
      ....
    },
    deps:[BService] //deps聲明工廠方法所依賴的服務。
    ]
工廠方法創(chuàng)建的對象是單例對象

在構造函數(shù)(constructor)中聲明的對象,會根據類名去匹配提供器(providers)中的令牌(token),然后根據 useClass 屬性的值去實例化指定的對象。

提供器注入規(guī)則
  • 當一個提供器聲明在模塊時,對所有組件都是可見的,所有組件都可以注入;

  • 當一個提供器聲明在組件時,只對聲明它的組件和子組件可見,其他組件不可見;

  • 當聲明在模塊的提供器與聲明在組件的提供器具有相同 token 時,聲明在組件的提供器會覆蓋聲明在模塊的提供器;

  • 一般情況下,我們都應該在模塊中聲明提供器。

以上是“Angular中依賴注入模式是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI