Parámetro Angular de 2 Pases al Constructor de Servicios
(1)
El valor que se pasa a su servicio será determinado por el inyector que lo está creando. Es posible que pueda hacer esto en una de sus definiciones de componentes:
@Component({
...
providers: [
provide(string, {useValue: "someSpecificValue"})
]
})
Sin embargo, esto tiene el problema de que está definiendo un proveedor para el token de cadena y eso podría provocar problemas de mantenimiento.
Probablemente sería un mejor patrón para definir algún modelo de configuración para su servicio:
class DemoConfig {
instanceSpecificString: string;
}
Y luego podría crear una instancia de eso para pasar a su servicio.
let config = { instanceSpecificString: "someSpecificValue" }
@Component({
...
providers: [
provide(DemoConfig, {useExisting: config})
]
})
Espero que esto sea de ayuda. No he intentado esto yo mismo; Los servicios que utilizo en mi aplicación son singletons. Aquí está la referencia que estaba usando:
https://angular.io/docs/ts/latest/api/core/index/provide-function.html
Supongamos que tengo este servicio de Angular 2:
@Injectable()
class Demo {
constructor(private instanceSpecificString: string) {
}
}
Observe que su constructor acepta una cadena específica de la instancia. Lo que quiero decir con eso es que quiero crear una instancia de este servicio varias veces y cada vez que se crea una instancia, quiero pasarle una cadena diferente según el contexto en el que se crea una instancia del servicio.
¿Cómo puedo hacer eso?
La string
PS se usa como ejemplo, pero el parámetro podría ser fácilmente de tipo number
, boolean
o incluso algún tipo de object
de configuración.