在角度2中,我希望有一个可以扩展到特定服务的父服务。
组件的属性将说明要使用的服务。
问题是我不知道该怎么做,因为injector.get()
需要类作为参数 - 而不是类名。这是代码示例。
import {Injectable, Injector, Provider} from '@angular/core';
@Injectable()
export class ObjectFactoryService {
constructor(private injector: Injector) {
}
getObjectService(tableId: string): Provider {
//return this.injector.get(SpecificService); - works but this is class not classname
return this.injector.get(this.createObjectServiceName(tableId)); //error - provider not exists
}
private createObjectServiceName(tableId: string): string {
return tableId.charAt(0).toUpperCase() + tableId.slice(1) + "Service";
}
}
答案 0 :(得分:4)
如果您为类提供字符串标记,则可以使用字符串标记
获取它们providers: [MyClass, {provide: 'MyClass', useExisting: MyClass}]
myClass = this.injector.get('MyClass');