switch ngswitch for example angularjs angularjs-directive

for - ngIf y ngSwitch AngularJS



no provider for ngswitch (4)

¿Cuál es la diferencia práctica entre ngIf y ngSwitch ? Ambas directivas manipulan el DOM, pero ngSwitch es más detallado. ¿Es el caso típico utilizar simplemente ngIf menos que necesite algo realmente grande, en cuyo caso use ngSwitch ?

¿Hay alguna situación en la que ngSwitch y ngIf no sean reemplazos directos? ¿O es su única diferencia práctica la sintaxis?


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


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


ngIf es básicamente una versión de ngSwitch con una sola condición. Es diferente de ngShow porque elimina el elemento DOM real en lugar de simplemente ocultarlo. Si está usando un ngSwitch con solo una verificación de condición verídica, entonces creo que ngIf hará lo mismo.


Michele Tilley lo tiene exactamente correcto , creo, particularmente al señalar el contraste con ngShow / ngHide . Hay una diferencia adicional a tener en cuenta: ng-If : ng-If se desconectará y volverá a conectar un elemento en el lugar . Pero ng-Switch tiene un elemento externo que contiene la declaración de la directiva principal y su condición: ng-switch="expression" . El contenido condicional dentro de ese elemento externo se append() -ed como el último elemento secundario del elemento externo, cambiando así su posición relativa a cualquier contenido no condicional dentro del elemento externo.

Y, vea este CodePen para 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 1.08 Plunk que lamentablemente se ha borrado ...