Angularの構造ディレクティブとは
Angular の構造ディレクティブは、HTML の構造を変更するためのディレクティブである。要素を追加・削除したり、条件に応じて表示を切り替えたりする際に使われる。
構造はHTMLの構造のことで、そのHTMLの構造に対してディレクティブ(命令、変更)するということ。
代表的な構造ディレクティブ
| ディレクティブ | 説明 |
|---|---|
*ngIf |
条件が true のときだけ要素を表示する |
*ngFor |
リストなどの配列を繰り返して要素を表示する |
*ngSwitch |
複数のケースに応じて要素を切り替える |
使用例
*ngIf
<div *ngIf="isLoggedIn">ようこそ!</div>
isLoggedIn が true のときだけ表示される。
*ngFor
<ul>
<li *ngFor="let item of items">{{ item }}</li>
</ul>
items 配列の中身を繰り返してリストにする。
items = ['りんご', 'バナナ', 'みかん'] の場合、以下のようなコードとなる。
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>みかん</li>
</ul>
*ngSwitch
<div [ngSwitch]="fruit">
<p *ngSwitchCase="'apple'">りんごです</p>
<p *ngSwitchCase="'banana'">バナナです</p>
<p *ngSwitchDefault>他の果物です</p>
</div>
fruit === 'apple' のとき "りんごです" が出力される。
補足:なぜ * を使うのか
* は「構造ディレクティブの糖衣構文(コードを見やすくする構文)」で、Angular が裏で <ng-template> に変換して扱っている。
たとえば
<div *ngIf="isVisible">Hello World!!</div>
は、実際にはこう変換される↓
<ng-template [ngIf]="isVisible">
<div>Hello World!!</div>
</ng-template>
まとめ
-
構造ディレクティブは HTML 構造を制御する
-
*ngIf,*ngFor,*ngSwitchが代表例 -
*は裏でテンプレート構文を生成している