Interface Angular 2 injetável?

Hoje me deparei com algo que não achei que me causaria problemas.

Em Java e Spring, posso declarar dois beans que implementam uma determinada interface, enquanto em outra classe em que são injetados, só trabalho com a interface; é de fato o que eu amo com a IoC: você realmente não precisa saber com qual objeto está trabalhando, apenastipo.

Então, no meu pequeno programa Angular2 / Typescript, eu estava tentando fazer o mesmo:

webapp.module.ts:

... 
import { WebAppConfigurationService } from './app/services/webapp.configuration.service';

@NgModule({
  ...
  providers: [WebAppConfigurationService]
})
export class AppModule { }

tnsapp.module.ts:

...
import { TnsConfigurationService } from './services/tns.configuration.service';

@NgModule({
   ...
   providers: [TnsConfigurationService]
})
export class AppModule { }

Ambos os módulos estão usando um provedor diferente:TnsConfigurationService ouWebAppConfigurationService.

No entanto, esses dois@Injectable serviços implementam a mesma interface:

configuration.interface:

export interface IConfigurationService {
    ...
}

Finalmente, em um dos meus componentes, eu uso o injetável fornecido por um desses módulos que mostrei no começo:

import { IConfigurationService } from './configuration.interface';

export class HeroesService {

    constructor(private configurationService: IConfigurationService) { }
}

Minha expectativa era que esse último componente fosse injetado com o serviço correto, mesmo que o parâmetro esteja apenas definindo explicitamente a interface. Obviamente, recebo um erro ("Erro: não é possível resolver todos os parâmetros do HeroesService")

Agora, não espero uma solução fácil para isso, pois parece uma falta de arquitetura. Mas talvez alguém possa me indicar um design alternativo?

questionAnswers(1)

yourAnswerToTheQuestion