依赖注入(Dependency Injection, DI)是 Angular 核心机制之一,通过解耦组件与具体实现,提升代码可维护性和可测试性。以下是关键要点:
1. DI 基础概念 🔍
- 依赖:组件所需的外部服务(如
HttpClient
、UserService
) - 注入:通过构造函数、setter 或
@Inject
装饰器传递依赖 - 容器:Angular 自动管理依赖的创建与注入
2. DI 容器与提供者 🧠
- 使用
@Injectable()
装饰器标记服务 - 通过
providers
配置注入容器(如NgModule
或Component
) - 示例:
@Injectable() class MyService { ... } @Component({ providers: [MyService] }) class MyComponent { ... }
3. 模块化实践 📦
- 在
NgModule
中声明服务并提供给子模块 - 使用
forwardRef
解决循环依赖问题 - 推荐阅读:Angular 模块化指南
4. 常见场景 🧩
- 服务复用:通过
@Injectable()
实现跨组件共享 - 配置注入:使用
@Inject
+Injector
传递自定义配置 - 工厂模式:结合
FactoryProvider
动态创建依赖
5. 高级技巧 ✨
- 多实例注入:通过
new
关键字创建独立实例 - 依赖注入元数据:使用
@Optional()
、@SkipSelf()
等修饰符 - 自定义注入器:继承
Injector
实现特定逻辑
如果需要进一步了解 Angular DI 原理,可参考官方文档深入学习!