ドキュメント(https://angular.io/guide/template-syntax#!#star-template)は、次の例を示しています。次のようなテンプレートコードがあるとします。
<hero-detail *ngIf="currentHero" [hero]="currentHero"></hero-detail>
レンダリングされる前に、「砂糖抜き」されます。つまり、アスタリスク表記は表記に転記されます。
<template [ngIf]="currentHero">
<hero-detail [hero]="currentHero"></hero-detail>
</template>
「currentHero」が真実である場合、これは次のようにレンダリングされます
<hero-detail> [...] </hero-detail>
しかし、次のような条件付き出力が必要な場合はどうでしょう。
<h1>Title</h1><br>
<p>text</p>
..そして、出力をコンテナにラップしたくない場合。
砂糖抜きバージョンを直接次のように書くことができます:
<template [ngIf]="showContent">
<h1>Title</h1>
<p>text</p><br>
</template>
そして、これはうまくいきます。ただし、現在はngIfにアスタリスク*の代わりに角かっこ[]を付ける必要があります。これは混乱を招きます(https://github.com/angular/angular.io/issues/2303)。
そのため、次のような別の表記法が作成されました。
<ng-container *ngIf="showContent"><br>
<h1>Title</h1><br>
<p>text</p><br>
</ng-container>
両方のバージョンで同じ結果が生成されます(h1およびpタグのみがレンダリングされます)。いつものように* ngIfを使用できるため、2番目の方法が推奨されます。
<template>
ディレクティブなしで使用する場合とは異なると思います。この場合、<template>
ただ生成さ<!--template bindings={}-->
れます。