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 的依赖注入系统通过提供者、注入器、模块和上下文等多个方面来管理依赖关系,使得代码更加模块化、可测试和维护。