我正在建立一个角度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类中。
有办法吗? 如果没有,最好的选择是什么。
答案 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