ng-template
Ini <ng-template>
adalah elemen Angular untuk rendering HTML. Itu tidak pernah ditampilkan secara langsung. Gunakan untuk arahan struktural seperti: ngIf, ngFor, ngSwitch, ..
Contoh :
<div *ngIf="hero" class="name">{{hero.name}}</div>
Angular menerjemahkan atribut * ngIf menjadi sebuah <ng-template>
elemen, melingkari elemen host, seperti ini.
<ng-template [ngIf]="hero">
<div class="name">{{hero.name}}</div>
</ng-template>
ng-container
Gunakan sebagai elemen pengelompokan jika tidak ada elemen host yang sesuai.
Contoh:
<div>
Pick your favorite hero
(<label><input type="checkbox" checked (change)="showSad = !showSad">show sad</label>)
</div>
<select [(ngModel)]="hero">
<span *ngFor="let h of heroes">
<span *ngIf="showSad || h.emotion !== 'sad'">
<option [ngValue]="h">{{h.name}} ({{h.emotion}})</option>
</span>
</span>
</select>
Ini tidak akan berhasil. Karena beberapa elemen HTML membutuhkan semua turunan langsung dari tipe tertentu. Misalnya, <select>
elemen membutuhkan anak. Anda tidak bisa membungkus opsi dalam kondisi atau <span>
.
Coba ini :
<div>
Pick your favorite hero
(<label><input type="checkbox" checked (change)="showSad = !showSad">show sad</label>)
</div>
<select [(ngModel)]="hero">
<ng-container *ngFor="let h of heroes">
<ng-container *ngIf="showSad || h.emotion !== 'sad'">
<option [ngValue]="h">{{h.name}} ({{h.emotion}})</option>
</ng-container>
</ng-container>
</select>
Ini akan berhasil.
Informasi selengkapnya: Arahan Struktural Sudut
@Input()
s.*
tentu saja lebih nyaman. Tetapi Anda benar,<ng-container>
diperkenalkan karena perbedaan sintaks menyebabkan kebingungan.