¡Esta es una revisión vieja del documento!
La directiva ng-if nos permite que exista o no un tag en la página. Podríamos pensar que es similar a ng-show o ng-hide, pero éstas últimas directivas simplemente los ocultan mediante CSS mientras que ng-if lo elimina del DOM o lo vuelve a añadir.
Esta directiva no debería tener mucho que explicar pero realmente tiene un detalle que la hace muy importante. Crea un nuevo $scope heredando de nuestro $scope del controlador. Esto realmente tiene una importancia enorme ya que implica saber como funciona la herencia de $scope en JavaScript y AngularJS.
Vamos a ver primeramente un ejemplo y comprobaremos que hay algo que funciona mal.
En el ejemplo prueba a escribir algo en el nombre y en el apellido. Veras como el apellido si que se modifica en la línea siguiente pero el nombre *no*.