https://github.com/IndigoSoft/ngx-component-outlet/blob/master/src/app/components/controls/control.resolver.tsВот ещё пример, только в данном случае будет не resolver, а сразу proxy.
Так же признак использования конкретного сервиса можно положить на конфигурацию, например под поле canUse. Тогда в модуле будет что-то вроде такого:
providers: [
provideService([
{ service: CustomService, canUse: CanUseCustomService },
{ service: AnotherService, canUse: CanUseAnotherService }
])
]
@Injectable()
class ProxyService {
constructor(
@Inject(SERVICES) private services) {}
doSomething() {
this.resolve().doSomething();
}
private resolve(): BaseService {
return /** дергаем каждый конфиг и ищем необходимый сервис */;
}