ngIf y ngSwitch AngularJS

Resuelto Harry asked hace 11 años • 4 respuestas

¿ Cuál es la diferencia práctica entre ngIfy ngSwitch? Ambas directivas manipulan el DOM, pero ngSwitchson más detalladas. ¿El caso típico es simplemente usarlo ngIfa menos que necesite algo realmente grande, en cuyo caso usarlo ngSwitch?

¿Existe una situación en la que ngSwitchy ngIfno sean reemplazos directos? ¿O su única diferencia práctica es la sintaxis?

Harry avatar May 25 '13 02:05 Harry
Aceptado

ngIfes básicamente una versión de ngSwitchcon una sola condición. Es diferente a ngShowque elimina el elemento DOM real en lugar de simplemente ocultarlo. Si está utilizando una ngSwitchverificación de condición única y veraz, creo que ngIfhará lo mismo.

Michelle Tilley avatar May 24 '2013 19:05 Michelle Tilley

Creo que Michele Tilley tiene toda la razón , particularmente al señalar el contraste con ngShow/ ngHide. Hay una diferencia adicional a tener en cuenta: ng-Ifseparará y volverá a adjuntar un elemento en el lugar . Pero ng-Switchtiene un elemento contenedor externo en el que declaras la directiva principal y su condición: ng-switch="expression". El contenido condicional dentro de ese elemento externo se agregará append()como el último hijo del elemento externo, cambiando así su posición en relación con cualquier contenido no condicional dentro del elemento externo.

Y consulte este CodePen para ver una demostración interactiva de los tres, que muestra las diferencias en la ejecución.


EDITAR: Este comportamiento cambió en Angular 1.2. Los elementos ahora se dejan en su lugar. El Codepen anterior menciona y demuestra esto, proporcionando un enlace a un Plunk 1.08 que lamentablemente ha sido eliminado...

XML avatar Nov 02 '2013 23:11 XML

Una diferencia más sería que ngIf y ngSwitch crean nuevos ámbitos, mientras que ngShow/ngHide no lo hacen.

Vahe Hovhannisyan avatar Apr 02 '2015 23:04 Vahe Hovhannisyan

Puedes pensar en ngIf/ngSwitch de la misma manera que lo haces con if/switch cuando estás codificando. Obviamente hacen casi lo mismo, pero hay casos en los que ngIf es mejor y hay casos en los que nfSwitch es mejor.

z_inx avatar Feb 15 '2016 11:02 z_inx