【问题标题】:Angular: Using Services in ClassesAngular:在类中使用服务
【发布时间】:2020-08-02 17:53:20
【问题描述】:

在您导入的另一个组件中使用服务时:

constructor(private exampleSrv: ExampleService) {}

使用类时,构造函数用于传递初始化对象的信息。如何在不通过构造函数导入的情况下在类中使用服务?或者有什么解决方法?

【问题讨论】:

    标签: angular class ionic-framework import


    【解决方案1】:

    您并没有真正使用构造函数“导入”它。你告诉 Angular 的依赖注入系统你需要访问最近的服务实例。这就是依赖注入在 Angular 中的工作原理。

    还值得注意的是,从 Typescript 速记的角度来看,您实际上在做什么:

    export class MyComponent {
      myService: MyService;
    
      constructor(serviceArg: MyService) {
        this.myService = serviceArg;
      }
    }
    

    您基本上是在说您的组件在构建时需要MyService 类型的参数,因此 Angular 的依赖注入提供了一个。

    【讨论】:

    • 是的,但是如果我想创建该类的实例,我必须为其提供该服务。这样做时,您不能将 EventEmmiter 与其他服务和组件一起使用。那么如何在不添加到构造函数的情况下使用Service呢?
    【解决方案2】:

    您可以执行以下操作

    import { YourService} from 'where ever it lives';
    
    
    private yourservice : YourService;
    
    initaliseService() {
      const injector = ReflectiveInjector.resolveAndCreate([YourService]);
      this.yourservice = injector.get(YourService);
    }
    

    this.initialiseService() 然后通过 this.yourservice 访问。

    如果您要使用的服务可以愉快地使用,而不是作为单例,并且它没有任何依赖项,您可以通过它使用它

    this.yourservice  = new Yourservice();
    

    【讨论】:

    • 我在服务中使用 EventEmitter,但无法访问它。所以我想这种方法不适合我的问题。
    • 事件发射器在模板中被拾取
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2019-11-06
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多