Angular 使用依賴注入(Dependency Injection,簡稱 DI)來管理組件、指令、管道等之間的依賴關系。依賴注入是一種設計模式,它允許我們將依賴項從組件中解耦,使得代碼更加模塊化、可測試和維護。在 Angular 中,依賴注入主要通過以下幾個方面來管理依賴:
@Injectable()
裝飾器將一個類標記為可被注入的服務提供者。這個類可以包含一個或多個依賴項,這些依賴項也將被注入到使用該服務的組件中。@Injectable({
providedIn: 'root'
})
export class MyService {
constructor() { }
}
export class MyComponent implements OnInit {
constructor(private myService: MyService) { }
ngOnInit() {
// 使用 myService
}
}
providers
數組中,我們可以確保在整個應用中都可以訪問這些服務。此外,我們還可以通過模塊的 imports
和 exports
屬性來實現依賴項的共享和傳遞。@NgModule({
providers: [MyService],
imports: [BrowserModule],
exports: [MyService]
})
export class AppModule { }
Injector
類來獲取所需的依賴項。這種方法通常用于非依賴注入的場景,例如在構造函數中無法獲取到依賴項的情況。export class MyComponent implements OnInit {
constructor(private injector: Injector) { }
ngOnInit() {
const myService = this.injector.get(MyService);
// 使用 myService
}
}
總之,Angular 的依賴注入系統通過提供者、注入器、模塊和上下文等多個方面來管理依賴關系,使得代碼更加模塊化、可測試和維護。