三個經常使用的內置結構型指令 —— NgIf、NgFor和NgSwitch 指令的類名拼寫成大駝峯形式(NgIf),而它的屬性名則拼寫成小駝峯形式(ngIf)html
<div *ngIf="hero" class="name">{{hero.name}}</div>
複製代碼
星號是一個用來簡化更復雜語法的「語法糖」。 從內部實現來講,Angular 把 *ngIf 屬性 翻譯成一個 <ng-template>
元素, 並用它來包裹宿主元素app
<ng-template [ngIf]="hero">
<div class="name">{{hero.name}}</div>
</ng-template>
複製代碼
<div *ngFor="let hero of heroes; let i=index; let odd=odd; trackBy: trackById" [class.odd]="odd">
({{i}}) {{hero.name}}
</div>
<ng-template ngFor let-hero [ngForOf]="heroes" let-i="index" let-odd="odd" [ngForTrackBy]="trackById">
<div [class.odd]="odd">({{i}}) {{hero.name}}</div>
</ng-template>
複製代碼
Angular 不容許*ngFor 和 *ngIf 放在同一個宿主元素上佈局
<div [ngSwitch]="hero?.emotion">
<ng-template [ngSwitchCase]="'happy'">
<app-happy-hero [hero]="hero"></app-happy-hero>
</ng-template>
<ng-template [ngSwitchCase]="'sad'">
<app-sad-hero [hero]="hero"></app-sad-hero>
</ng-template>
<ng-template [ngSwitchCase]="'confused'">
<app-confused-hero [hero]="hero"></app-confused-hero>
</ng-template >
<ng-template ngSwitchDefault>
<app-unknown-hero [hero]="hero"></app-unknown-hero>
</ng-template>
</div>
複製代碼
<ng-container>
Angular 的 <ng-container>
是一個分組元素,但它不會污染樣式或元素佈局,由於 Angular 壓根不會把它放進 DOM 中。spa