依赖注入(Dependency Injection, DI)是 Angular 核心机制之一,通过解耦组件与具体实现,提升代码可维护性和可测试性。以下是关键要点:

1. DI 基础概念 🔍

  • 依赖:组件所需的外部服务(如 HttpClientUserService
  • 注入:通过构造函数、setter 或 @Inject 装饰器传递依赖
  • 容器:Angular 自动管理依赖的创建与注入
Dependency_Injection

2. DI 容器与提供者 🧠

  • 使用 @Injectable() 装饰器标记服务
  • 通过 providers 配置注入容器(如 NgModuleComponent
  • 示例:
    @Injectable()
    class MyService { ... }
    
    @Component({
      providers: [MyService]
    })
    class MyComponent { ... }
    

3. 模块化实践 📦

  • NgModule 中声明服务并提供给子模块
  • 使用 forwardRef 解决循环依赖问题
  • 推荐阅读:Angular 模块化指南

4. 常见场景 🧩

  • 服务复用:通过 @Injectable() 实现跨组件共享
  • 配置注入:使用 @Inject + Injector 传递自定义配置
  • 工厂模式:结合 FactoryProvider 动态创建依赖
Factory_Pattern

5. 高级技巧 ✨

  • 多实例注入:通过 new 关键字创建独立实例
  • 依赖注入元数据:使用 @Optional()@SkipSelf() 等修饰符
  • 自定义注入器:继承 Injector 实现特定逻辑

如果需要进一步了解 Angular DI 原理,可参考官方文档深入学习!