Mientras que la mayoría de ustedes probablemente estén familiarizados con la forma básica de configurar un proveedor simplemente declarándolo:

providers: 

La inyección de dependencias Angular proporciona capacidades más avanzadas.

Con el proveedor de fábrica puede configurar Injector para que devuelva un valor invocando una función específica. Veamos este ejemplo.

providers: };

La propiedad provide configura el token que se utilizará en la inyección de dependencias y la useFactory apunta a la función que se utilizará para devolver el valor deseado. La propiedad deps configura los tokens que se pasarán a la función de fábrica.

¿Cuándo usarlo?

El proveedor de fábrica puede ser muy útil cuando necesita crear un valor dependiente de forma dinámica, basado en información que no tendrá hasta el tiempo de ejecución. Puede tomar una decisión informada sobre qué valor devolver en función de otros servicios y el estado de la aplicación.

Ejemplo:

Intentemos adivinar desde qué dispositivo móvil ha iniciado sesión un usuario. Intentaremos utilizar información como el agente de usuario del navegador, el ancho y la altura de la pantalla. Definamos tres tokens que se utilizarán más adelante para identificar el nombre del dispositivo.

La clase InjectionTokenCrea un token que se puede usar en la inyección de dependencias angulares. InjectionTokenestá parametrizado en T, que es el tipo de objeto que devolverá Injector. Esto proporciona un nivel adicional de seguridad de tipo.

providers: providers: providers: 

Ahora podemos idear un algoritmo para detectar el nombre del dispositivo basado en los tres tokens que definimos anteriormente. Pasamos una función de flecha a la useFactory que tiene 3 dependencias, para resolver esas dependencias, pasamos un array de dependencias (dep) con los tokens listados.

providers: 

Finalmente, consumiremos el nombre del dispositivo en nuestro componente Angular.

@Component({ selector: 'my-device-name')
export class DeviceName {
constructor(@Inject('DeviceName') private deviceName: string) {}}

El decorador de parámetros de inyección indica a Angular DI que este parámetro (Nombre de dispositivo) debe resolverse a partir de un nombre de dispositivo de token definido.

Eso es todo!

sígueme en Twitter #LanoTechno

Deja una respuesta

Tu dirección de correo electrónico no será publicada.