首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在没有包装到angular模块中的类中插入$q提供程序?

如何在没有包装到angular模块中的类中插入$q提供程序?
EN

Stack Overflow用户
提问于 2018-08-02 00:17:31
回答 2查看 72关注 0票数 0

我有一个es6模块

MyModule

let _q$;// I would like the $q provider of angularjs to be a private property of that module

export default class MyClass{
   constructor($q){
      _$q = $q
    }
}

实际上,(我发现)实例化MyClass的唯一方法是通过一个angularjs函数:

import MyClass from "../model/MyClass";
angular.module('myModule').run(function($q){
   var myObject = new MyClass($q);
})

问题是我不能访问当前文件之外的myObject。

我想要做的是在MyModule中实例化MyClass,然后导出它:

class MyClass{
   constructor($q){
      _$q = $q
    }
}

export myObject = new MyClass($q);

这里的问题是我不知道如何访问$q。

我有点卡住了:(

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-02 19:14:36

完整的答案是:

import angular from 'angular';
const $injector = angular.injector(['ng']);//<- ['ng'] is necessary to tell angular in which module the provider resides.
const $q = $injector.get('$q');

class MyClass {
  someMethod() {
    return $q.resolve('something');
  }
};

export let myObject = new MyClass();
票数 1
EN

Stack Overflow用户

发布于 2018-08-02 00:25:43

在编写标准的angularJs代码时(例如,服务、组件或使用.run块的示例),注入器会自动为您应用,但也可以显式调用它。下面这样的代码可能会对你有用:

import angular from 'angular';
const $injector = angular.injector();
const $q = $injector.get('$q');

class MyClass {
  someMethod() {
    return $q.resolve('something');
  }
};

export myObject = new MyClass();

有关注入器的文档,请参阅此页面:https://docs.angularjs.org/api/auto/service/$injector

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51638006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档