Dependencia de inyección angular 2 fuera del constructor
Actualmente estoy cavando en DI en Angular 2. Estoy implementando un REST-Client usando un subtipo genérico para tipos de datos concretos como este:
class RESTClient<T>{
constructor() {
var inj = ReflectiveInjector.resolveAndCreate([HTTP_PROVIDERS]);
this.http = inj.get(Http);
this.conf = RESTConfiguration;
}
}
class BookClient extends RESTClient<Book>{
constructor(){
// since I dont want to inject the HTTP Providers here, I'm using a custom injector in the super class
super();
}
}
class WriterClient extends RESTClient<Writer>{
...
...
}
Entonces, según tengo entendido, habrá un servicio http compartido entre todos los RESTClients inyectados por el servicio REST de superclases.
Ahora quiero tener una clase RESTConfiguration como tal:
@Injectable()
export class RESTConfiguration {
get baseURL() {
return this._baseURL;
}
set baseURL(value) {
alert("sets value to"+value);
this._baseURL = value;
}
private _baseURL;
}
Debe configurarse en la aplicación principal como tal:
initializeApp(){
this.restconf.baseURL = "http://localhost:3004/";
}
bootstrap(MyApp, [RESTConfiguration]).then();
Ahora me pregunto cómo inyectar una instancia singleton de mi RESTConfiguration en la clase RESTService sin pasarla al constructor, que quiero mantener sin argumentos para reducir la duplicación de código y evitar problemas con los genéricos en mecanografiado.
En el ejemplo anterior (primer fragmento de código) estoy tratando de inyectar mi configuración usando el ReflectiveInjector que creé, que me entrega una instancia personalizada de mi Configuración.
Pensé en varias soluciones:
Obtener acceso al "inyector global" de aplicaciones haciendo que esté disponible mediante un servicio o alguna propiedad de clase estática
Implementando lógica singleton extra en mi configuración
¿encuentra una manera de usar el método de inyección angular nativo fuera del constructor?
¿Hay errores en mi pensamiento o estoy haciendo un mal uso del marco DI?