Le tag ng-template est un tag particulier qui n'affiche pas les éléments qui y sont contenus mais les rend disponible aux directives appliquées dessus par l'injection de la classe TemplateRef.
La directive ngIf a donc accès au template en injectant la classe TemplateRef ; elle décide ensuite d'insérer ou non ce template dans la vue en fonction de la valeur de l'expression book != null.