Документація ( 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/isissue/2303 )
З цієї причини було створено інше позначення, як-от так:
<ng-container *ngIf="showContent"><br>
<h1>Title</h1><br>
<p>text</p><br>
</ng-container>
Обидві версії дадуть однакові результати (відображатимуться лише теги h1 і p). Другий є кращим, оскільки ви можете використовувати * ngIf, як завжди.
<template>
коли він використовується без директив. в цьому випадку<template>
просто виробив би<!--template bindings={}-->
.