Angular 中的 Dependency Injection(DI,依賴注入) 是一種設計模式。
用來管理元件之間的相依關係,讓你不用自己手動建立物件
而是交由 Angular 的 DI 系統來「自動提供(inject)所需要的服務或物件」。
宣告
使用 providedIn: 'root’ (推薦)
angular 會在應用程式啟動時已單例模式自動註冊到所有類別中
使用 Component 提供
在 component 使用 providers 載入 Dependency
使用 ApplicationConfig 提供
可以在
ApplicationConfig
使用 providers 註冊providers 提供了幾種方法來實例 dependency
- useValue : 靜態變數
- useClass : 使用 class 來用 new() 實例化
useExisting: 將一個 DI 命名為另一個 DI
- useFactory : 使用函式,會動態執行函式來取用結果
已上述為例 在使用 HeroService 這個DI 時,就會呼叫 heroServiceFactory 來動態判斷 HeroService Class 內的 isAuthorized,deps 為 Factory 要使用的參數