Angular does not allow you to refer to a provider in another, as this can lead to a cyclic dependency injection. The way I solved this is to remove the class variable declaration from the constructor and use the Injector from the angular kernel to inject the dependency into the timeout using the following code:
, A B,
import { ProviderA } from '../provider-a/provider-a';
export class ProviderB {
provider_a:any;
constructor(public injector: Injector) {
console.log('Hello ProviderB Provider');
setTimeout(() => this.provider_a = injector.get(ProviderA));
}
}