三个经常使用的内置结构型指令 —— 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