Tài liệu ( https://angular.io/guide/template-syntax#!#star-template ) đưa ra ví dụ sau. Giả sử chúng tôi có mã mẫu như thế này:
<hero-detail *ngIf="currentHero" [hero]="currentHero"></hero-detail>
Trước khi nó được kết xuất, nó sẽ được "khử đường". Đó là, ký hiệu dấu hoa thị sẽ được phiên âm sang ký hiệu:
<template [ngIf]="currentHero">
<hero-detail [hero]="currentHero"></hero-detail>
</template>
Nếu 'currentHero' là sự thật, điều này sẽ được hiển thị dưới dạng
<hero-detail> [...] </hero-detail>
Nhưng nếu bạn muốn một đầu ra có điều kiện như thế này:
<h1>Title</h1><br>
<p>text</p>
.. và bạn không muốn đầu ra được bọc trong một thùng chứa.
Bạn có thể viết phiên bản khử đường trực tiếp như vậy:
<template [ngIf]="showContent">
<h1>Title</h1>
<p>text</p><br>
</template>
Và điều này sẽ hoạt động tốt. Tuy nhiên, bây giờ chúng tôi cần ngNếu có dấu ngoặc [] thay vì dấu hoa thị * và điều này thật khó hiểu ( https://github.com/angular/angular.io/issues/2303 )
Vì lý do đó, một ký hiệu khác đã được tạo ra, như vậy:
<ng-container *ngIf="showContent"><br>
<h1>Title</h1><br>
<p>text</p><br>
</ng-container>
Cả hai phiên bản sẽ tạo ra kết quả giống nhau (chỉ thẻ h1 và p sẽ được hiển thị). Cái thứ hai được ưa thích vì bạn có thể sử dụng * ngNếu như mọi khi.
<template>
khi nó được sử dụng mà không có chỉ thị.<template>
sẽ chỉ sản xuất<!--template bindings={}-->
trong trường hợp này.