Saltar al contenido

¿Qué es una tubería impura en Angular?

Solución:

Una pipa pura solo se llama cuando Angular detecta un cambio en el valor o los parámetros pasados ​​a una tubería.

Una pipa impura se llama para cada ciclo de detección de cambios, sin importar si el valor o los parámetros cambian.

Esto es relevante para los cambios que no son detectados por Angular

  • cuando pasa una matriz u objeto que cambió el contenido (pero sigue siendo la misma instancia)
  • cuando la tubería inyecta un servicio para obtener acceso a otros valores, Angular no reconoce si han cambiado.

En estos casos, probablemente aún desee que se ejecute la tubería.

Debe tener en cuenta que las tuberías impuras tienden a ser ineficaces. Por ejemplo, cuando se pasa una matriz a la tubería para filtrar, clasificar, … entonces este trabajo se puede realizar cada vez que se ejecuta la detección de cambios (lo cual es a menudo especialmente con el valor predeterminado ChangeDetectionStrategy setting) aunque es posible que la matriz ni siquiera haya cambiado. Su canalización debe intentar reconocer esto y, por ejemplo, devolver los resultados almacenados en caché.

Además de la respuesta anterior, quiero agregar otra diferencia: el número de instancias.

Suponga que una tubería se usa varias veces en un código HTML. Igual que:

<p> {{'Hello' | translate }}<p>
<p> {{'World' | translate }}<p>
  • Si la tubería es pura: solo habrá una instancia de la tubería. El método de transformación se llamará dos veces pero en la misma instancia.
  • Si la tubería es impura: habrá dos instancias de la tubería.

(puede ver esto generando una identificación aleatoria en el constructor de la tubería e imprimirla en ambos: constructor y transform método)

Como las tuberías puras (o las funciones generalmente puras) no (deberían) tener NINGÚN efecto secundario, el mismo código puro se puede reutilizar cualquier cantidad de veces sin preocupaciones. Parece que esta es la razón por la que las pipas puras solo se instancian una vez.

OBS: esto es válido en mi entorno angular 4.0.

Demostración: diferencia b / n tubería pura e impura

En angular, a pipe se puede utilizar como pure y impure

¿Qué es la pipa pura o impura?

En palabras simples,
impure-pipe funciona para cada cambio en el component

pure-pipe funciona solo cuando el component está cargado.

¿Cómo hacer pipa o impuro puro?

@Pipe({
  name: 'sort',
  pure: false //true makes it pure and false makes it impure
})
export class myPipe implements PipeTransform {

  transform(value: any, args?: any): any {
     //your logic here and return the result
  }

}

¿Cómo usarlo?

<div> {{ arrayOfElements | sort }}<div>

Tenga cuidado al usar tuberías impuras porque esto puede hacer un uso excesivo de los recursos del sistema en caso de uso inadecuado.

Leer en profundidad: Pure vs Impure Pipe

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *