当前位置: 首页 > 知识库问答 >
问题:

将服务注入类(而不是组件)Angular2

陶胤运
2023-03-14
export class Product {

  id: number;
  name: string;
  manufacturer: string;

  constructor(product: any) {

    this.id = product.id;
    this.name = product.name;
    this.manufacturer = product.manufacturer;

}
let injector = ReflectiveInjector.resolveAndCreate([ProductService]);
this.productService = injector.get(ProductService);

谢谢

共有1个答案

黄涵畅
2023-03-14

我也在与类似的问题作斗争,我最终做的是让这项服务成为一个单独的服务,也是一个角注射服务。

这样,您就可以通过DI注入Angular类,并调用静态getInstance()方法来获取该类的单例实例

类似于这样:

import {Injectable} from "@angular/core";
@Injectable()
export class MyService {

  static instance: MyService;

  static getInstance() {
    if (MyService.instance) {
      return MyService.instance;
    }

    MyService.instance = new MyService();
    return MyService.instance;
  }

  constructor() {
    if (!MyService.instance) {
      MyService.instance = this;
    }
    return MyService.instance;
  }
}
 类似资料:
  • 我尝试的方法之一是在从MessageBusListener创建FlowListener实例的同时传递服务引用。然而,当参数化服务被停用和激活回来时,我认为OSGi服务将创建一个新的服务实例并绑定到MessageBusListener,但是FlowListener仍然会有一个过时的引用。 期待其他方法,可以满足我的要求。

  • 问题内容: 我在Groovy中实现了Grails服务,我想在Web应用程序中将其注入Java类。我知道我可以通过applicationContext.getBean(“ exampleService”)获得Java中的bean,但是在编译时类型ExampleService是未知的。 我可以简单地导入服务吗?它似乎没有声明一个典型的包。 (我对Grails和Java Web还是很陌生,因此非常感谢能

  • 所以我有一个简单的java类: ClassA包含: B类: 我的测试设置如下所示: 问题是ClassB不是为ClassA注入的。 然后通过classA调用returnObject(ClassB),它返回NullPointerException(ClassB不是模拟/注入的)。 如果通过IWantToTestThisClass调用returObject(class B),则可以。 这是同时为两个类注

  • 我有个问题..我正在创建一个aspectj类,在我的类中我需要访问一个spring-boot服务,但是当我尝试使用@AutoWired或通过构造函数注入它时,我出现了一个错误: 有人能帮帮我吗?

  • 我找不到这个问题的答案。。。 如果我注入服务容器,如: 那么它的工作原理就和我的一样好: 那么,我为什么不直接注入服务容器,然后从类中获取服务呢?

  • 问题内容: 我写了一个AngularJS服务,我想对其进行单元测试。 我的app.js文件已注册: 我可以测试DI是否像这样工作: 这证明了可以通过DI框架创建服务,但是接下来我要对服务进行单元测试,这意味着要模拟注入的对象。 我该怎么做呢? 我试过将我的模拟对象放在模块中,例如 并将服务定义重写为: 但是后者似乎停止了DI所创建的所有服务。 有人知道我可以如何为单元测试模拟注入的服务吗? 谢谢