在我实例化的自定义类中获取angular 2服务

时间:2017-08-02 19:17:26

标签: javascript angular angular2-services angular2-directives

我正在建立一个角度2应用程序,我需要一种方法来获取由角度框架注入/实例化的服务/类的引用。

我有一个通用类...我称之为自定义类,我在整个网站中使用它。然而,这个类是由我实例化的,而不是角度2。 现在,我需要使用该类中的angular 2实例化的一些服务。

// this is not angular component/service
export default class Custom {

    constructor(properties) {

    }
    doSomething() {
        // UserService is a service that is injected into other componetns constructors, but this class is not a component.
        // Here i need a ref to the singleton 'UserService' made by angular
        let userService = someAngularFunction.getInstance('UserService');
        userService.doIt();
    }

}

// in some component.
export class MyComponent implements OnInit {
    doAnotherThing() {
       let c = new Custom('some generic params');
       c.doSomething();
    }
}
// in some n number of other components, repeat the above.

注意,我知道我可以将' UserService '注入其中 MyComponent ,以及 MyComponent ,将其传递给 new Custom()构造函数。但是,因为MyComponent本身不使用该服务,而且

自定义类在许多其他地方实例化,id喜欢将该依赖项移动到Custom类中。

有办法吗? 如果没有,最好的选择是什么。

1 个答案:

答案 0 :(得分:0)

据我所知,你有两个选择:

1)手动将服务传递给Custom类构造函数。

let x = new Custom(this.userService);

2)使Custom类也成为一项服务。然后它将参加Angular的DI。

有关详细信息,请参阅此文章:https://blog.thoughtram.io/angular/2015/05/18/dependency-injection-in-angular-2.html