Die Dokumentation ( https://angular.io/guide/template-syntax#!#star-template ) enthält das folgende Beispiel. Angenommen, wir haben folgenden Vorlagencode:
<hero-detail *ngIf="currentHero" [hero]="currentHero"></hero-detail>
Bevor es gerendert wird, wird es "entzuckert". Das heißt, die Asterix-Notation wird in die Notation transkribiert:
<template [ngIf]="currentHero">
<hero-detail [hero]="currentHero"></hero-detail>
</template>
Wenn 'currentHero' wahr ist, wird dies als gerendert
<hero-detail> [...] </hero-detail>
Was aber, wenn Sie eine bedingte Ausgabe wie diese wünschen:
<h1>Title</h1><br>
<p>text</p>
.. und Sie möchten nicht, dass die Ausgabe in einen Container eingeschlossen wird.
Sie könnten die entzuckerte Version direkt so schreiben:
<template [ngIf]="showContent">
<h1>Title</h1>
<p>text</p><br>
</template>
Und das wird gut funktionieren. Jetzt muss ngIf jedoch Klammern [] anstelle eines Sterns * haben, was verwirrend ist ( https://github.com/angular/angular.io/issues/2303 ).
Aus diesem Grund wurde eine andere Notation erstellt, wie folgt:
<ng-container *ngIf="showContent"><br>
<h1>Title</h1><br>
<p>text</p><br>
</ng-container>
Beide Versionen führen zu denselben Ergebnissen (nur die Tags h1 und p werden gerendert). Der zweite wird bevorzugt, da Sie * ngIf wie immer verwenden können.
<template>
wenn es ohne Anweisungen verwendet wird.<template>
würde nur<!--template bindings={}-->
in diesem Fall produzieren.