如何将构造函数值从另一个服务传递给服务?

时间:2020-12-29 21:13:01

标签: angular dependency-injection

我有一个服务定位器,它在内部使用 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 ??}}});

0 个答案:

没有答案