我正在使用Angular v7.3.5,并且想在非Angular类中使用Service,就像这样:
foo.model.ts
import { Foo2Service } from './foo2.service';
// Definition for FooClass (a model)
export class FooClass {
constructor(args: any) {
// Do something with args
}
func1() {
// -----> Use Foo2Service here <-------
}
}
foo2.service.ts
export class Foo2Service {
// Service code
constructor(private bar: BarService) {}
init() {
// Code that returns something
}
}
app.component.ts
import { FooClass } from './foo.model.ts';
export class AppComponent {
constructor() {
const foo = new FooClass('bar');
console.log(foo.func1());
}
}
是否可以这样做?如果可以,什么是最好的方法?
注意::我尝试使用Angular提供的Injector
类,但对我而言不起作用。所以请帮忙。
答案 0 :(得分:1)
使用Injector
应该可以:
创建注射器:
const injector = Injector.create({
providers: [
{ provide: Foo2Service, deps:[] },
]
});
为了进行测试,让我们从服务中的init函数返回字符串test
:
init() {
return 'test';
}
为了进行测试,在您的课堂上,您将使用喷射器调用init
:
func1() {
let myService = injector.get(Foo2Service);
return myService.init();
}
最后调用func1
的组件:
ngOnInit() {
const foo = new FooClass({});
console.log(foo.func1()) // prints 'test'
}