我有一个自定义类:
class Global {
public isMobileDevice() {
}
}
因此,我想在此方法中注入服务类,例如:
public isMobileDevice(private deviceService: DeviceDetectorService): boolean {
return true;
}
因为我无法将这样的服务注入到这样的构造函数中:
constructor(private deviceService: DeviceDetectorService) {
}
我尝试过:
public isMobileDevice(): boolean {
return new DeviceDetectorService();
}
答案 0 :(得分:2)
通过在要使用的类上使用静态函数(而不是有角服务),可以通过在类上使用静态函数来避免将服务注入组件的构造函数中。
export class Global {
public static isMobileDevice() {
}
}
然后,您按如下方式使用它:
import { Global } from '<path_to_global>';
class SomeComponent {
isMobile = Global.isMobileDevice();
}
答案 1 :(得分:1)
如果要在不使用构造函数的情况下注入服务,则可以在module
类中创建一个静态方法,如下所示。
export class GlobalModule {
static injector: Injector;
constructor(injector: Injector) {
GlobalModule.injector = injector;
}
}
通过injector
类,您可以获得DeviceDetectorService
public isMobileDevice(): boolean {
var deviceDetectorService = GlobalModule.injector.get(DeviceDetectorService);
// Logic
}
请确保在应用程序的早期阶段设置了injector
属性。