我有一个服务定位器,它在内部使用 injector.get() 来获取服务实例(ServiceLocator:Injector - 在应用程序中定义,因此每个人都可以以通用方式获取服务实例)。 服务 A:
@Injectable({ providedIn: "root" })
export class EntitySearchService {
constructor(@Inject("resourse") private resourse: Resourse) {}
private currentService = ServiceLocator.get(EntityServiceFactory).getServiceInstance(this.resourse);
searchEntity(termToSearch: string) {
this.currentService.setSearchFilter({ name: termToSearch }).fetchWithFilter();
}
resetSearchPage() {
if (get(this.currentService.getFilter(), "name")) {
this.currentService.setSearchFilter({ pageNumber: 1 }).fetchWithFilter();
}
}
getSearchFilter() {
console.log("ok!");
}
}
在每个组件中我都这样做:
Service B 是一个抽象类,它使用服务定位器注入 EntitySearchService:
providers: [DialogService, EntitySearchService, { provide: "resourse", useValue: Resourse.training }],
但是在我的服务中,我不能使用 providers 数组。那么如何将 this.resource 传递给它来执行此操作?
protected service = ServiceLocator.get(EntitySearchService, {{{how to pass this.resourse ??}}});