You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建含依赖注入的类的对象?附HttpClient依赖类示例

创建带依赖注入的MyClass实例的正确方式

首先,你的MyClass依赖Angular的HttpClient服务,而Angular本身是基于依赖注入(DI)体系工作的,所以推荐让Angular框架来帮你管理实例的创建,而不是手动new,这样能保证所有依赖都被正确初始化,也符合Angular的最佳实践。

步骤1:将MyClass注册为可注入服务

首先需要给MyClass添加@Injectable装饰器,让Angular的DI系统能够识别它:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root' // 全局单例模式,也可以指定具体模块
})
export class MyClass { 
  constructor(private http: HttpClient) { } 

  // 类的其他逻辑
}

providedIn: 'root'会让这个类成为全局单例服务,Angular会自动处理它的依赖注入流程。

步骤2:在组件/其他服务中注入使用

现在你可以在任何需要使用MyClass的组件或服务中,直接在构造函数里声明依赖,Angular会自动创建并注入实例:

import { Component } from '@angular/core';
import { MyClass } from './my-class';

@Component({
  selector: 'app-my-component',
  template: '<p>正在使用MyClass</p>'
})
export class MyComponent {
  constructor(private myClass: MyClass) {
    // 直接通过this.myClass调用类中的方法即可
    this.myClass.someMethod();
  }
}

如果非要手动创建实例(不推荐)

如果因为特殊需求必须手动new实例,你需要自己提供HttpClient的实例。但要注意,HttpClient本身也是DI服务,所以你需要在一个已经有DI上下文的环境中(比如组件、服务)先注入HttpClient,再传给MyClass:

import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { MyClass } from './my-class';

@Component({
  selector: 'app-my-component',
  template: '<p>手动创建MyClass实例</p>'
})
export class MyComponent {
  myClassInstance: MyClass;

  constructor(private http: HttpClient) {
    // 手动传入HttpClient实例来创建MyClass
    this.myClassInstance = new MyClass(http);
  }
}

⚠️ 注意:这种方式不推荐,因为会绕过Angular的DI系统,导致MyClass无法享受到DI带来的好处(比如依赖的生命周期管理、测试时的模拟替换等),而且如果HttpClient有自定义配置或拦截器,手动创建的实例可能无法生效。

内容的提问来源于stack exchange,提问作者reika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:34:34