PR

Angular:*ngIf 条件分岐で表示内容を変更する方法を3分でわかりやすく

TypeScript

*ngIfAngularで使える便利なツールの1つ。これを使うと「もし〜なら、これを表示する」という条件付きで画面に何かを表示させたり隠したりすることができるようになります。ユーザの状態や選択に応じて画面表示をさせたいような場合に非常に便利で、様々な場面で利用されます。

<!-- ログインしている場合に表示 -->
<p *ngIf="isLoggedIn; else notLoggedIn">ようこそ!</p>

<!-- ログインしていない場合に表示 -->
<ng-template #notLoggedIn>
  <p>ログインしてください</p>
</ng-template>

このページでは、*ngIfの使い方の基本とコツを3分でわかりやすく解説します。

参考 TypeScriptの基本

スポンサーリンク

Angular:*ngIf の基本

Angularの*ngIfは、Angularのテンプレート構文の一部で、特定の条件が真(true)の場合に、DOMにコンポーネントまたはHTML要素を表示するために使用されます。条件が偽(false)の場合、要素はDOMから完全に削除されます。

分かりやすく言えば、特定の条件が満たされた時だけ、画面上に何かを表示させることができます、ということです。

「もし(if)この条件が真(true)なら、これを表示して」と指示を出しているようなもので、簡単に言うと、ある条件によって画面に表示する内容を変えられる魔法のようなものだと言えます。

*ngIfは、動的にコンテンツを表示したり、逆に隠したりする場合に非常に役立ちます。例えば、ログインしている場合には「ようこそ!」と表示し、ログインしていない場合には「ログインしてください」という文言を表示したい!というような場合に便利です。

<!-- ログインしている場合に表示 -->
<p *ngIf="isLoggedIn; else notLoggedIn">ようこそ!</p>

<!-- ログインしていない場合に表示 -->
<ng-template #notLoggedIn>
  <p>ログインしてください</p>
</ng-template>

もちろん、使い方を工夫することで実現できる機能は無限大です。(ユーザがこの商品をお気に入り登録していたら・・・とか、ユーザのセッションが切れていたら・・・とか。)

*ngIf の構文ルール

<要素名 *ngIf="条件">表示したい内容</要素名>
  • 要素名 →divpspanなど、HTMLの任意の要素名。
  • 条件 →表示するかどうかを決めるための条件。この条件がtrue(真)の場合にのみ指定した要素が表示される。
  • 表示したい内容 →条件が真の場合に画面に表示されるテキスト。

*ngIfの基本は、条件がtruefalseかによって、HTMLの特定の部分を表示させるかどうかをコントロールすることです。まずはシンプルなサンプルコードでその基本的な動作原理を理解しましょう。

サンプルコード 単純な条件で表示/非表示を切り替える

<p *ngIf="isLoggedIn">ようこそ、ユーザー様!</p>

isLoggedIn(ログインしているかどうかの状態を表す変数)がtrueの場合にのみ、<p>タグ内の「ようこそ、ユーザー様!」というメッセージが表示されます。もし、isLoggedInがfalseであればメッセージは表示されません。

ngIfは基本的には指定した変数がTrueかFalseか?を見ます。A=Bであれば・・・というように、一般的なif文とは微妙に違う点に注意してください。

*ngIfにelse条件を付与する

*ngIfディレクティブにelse条件を加えることで、条件がfalseの時に表示する内容を指定することができます。「もし条件が真(true)ならこの内容を表示し、そうでなければ(else)別の内容を表示する」という動作。

ここでは、elseの使い方を具体的なステップで説明します。

ステップ1: elseブロック用のテンプレートを作る

まず、条件がfalseの時に表示したい内容を<ng-template>タグで囲み、このテンプレートに名前をつけます。この名前は後で*ngIfで参照します。

<ng-template #templateRefName>
  <p>この内容は条件がfalseの時に表示されます。</p>
</ng-template>

#templateRefNameはテンプレート参照変数です。この名前は何でも良く、後で参照しやすい名前をつけます。

Q
<ng-template> とは?
A

<ng-template>はAngularで使われる特別なタグで、画面上に直接表示されない「テンプレート」を定義するために使います。これは「もし必要になったら、これを表示してね」という準備をしておくためのものですが、条件が合致しない限りは何も表示されません。

簡単に言うと、<ng-template>はある条件が真の時だけ表示したいHTMLの断片を保持しておく場所です。

ステップ2: *ngIfにelse条件を追加

次に、条件がtrueの時に表示したい内容のある要素に*ngIfを設定し、そのディレクティブ内でelseキーワードを使ってステップ1で作ったテンプレート参照変数名を指定します。

<!-- 条件がtrueの時に表示 -->
<div *ngIf="isLoggedIn; else notLoggedIn">
  <p>ログイン済みです。</p>
</div>

<!-- 条件がfalseの時に表示するテンプレート -->
<ng-template #notLoggedIn>
  <p>ログインが必要です。</p>
</ng-template>

この例では、isLoggedIntrueなら「ログイン済みです。」が表示され、falseなら「ログインが必要です。」が表示されます。

*ngIfelseを組み合わせることで、条件によって表示を切り替えることができるようになります。<ng-template>とテンプレート参照変数を使うことで、条件が偽の時の表示内容を自由にカスタマイズできます。これにより、より動的でユーザーフレンドリーなウェブアプリケーションを作成することが可能になります。

ポイント ngIfとは・・・?

  • *ngIfとは: Angularで、特定の条件に基づいて、画面に何かを表示させたいときや隠したいときに使います。
  • 条件: ここでいう「条件」とは、簡単に言うと「表示するかどうか」を決めるルールです。このルールがtrue(はい、表示します)の場合はその部分が表示され、false(いいえ、表示しません)の場合は表示されません。
  • 使い方: HTMLの中で*ngIf="条件"と書くことで、「この条件がtrueならこのHTMLの部分を表示して」とAngularに伝えます。

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
TypeScriptWEBデザイン
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました