トッカンソフトウェア

Angular ngFor、ngIf、ngSwitch、ng-template

今回は ngFor、ngIf、ngSwitch、ng-template を使ってみます。

Angular CLIの続きからやるので、環境がない場合、そちらを参考に環境構築してください。

サンプルソース

app.component.ts
				
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  template:
    `
    <input #hello (keyup)="update(hello.value)" placeholder="メソッドの引数" />
    <h1>{{hello.value}}</h1>
  
    <h1 *ngIf="hello.value == 'a'">ngIf</h1>
  
    <div [ngSwitch]="hello.value">
      <h1 *ngSwitchCase="'aa'"> 
        ngSwitchCase1
      </h1>
      <h1 *ngSwitchCase="'aaa'"> 
        ngSwitchCase2  
      </h1>
      <h1 *ngSwitchDefault> 
        default  
      </h1>
    </div>
  
    <ul>
      <li *ngFor="let str of strs; index as i; first as isFirst ; even as isEven"> 
        *ngFor - {{ i }} - {{ str }} - 最初:{{ isFirst }} - 偶数:{{ isEven }}
      </li>
    </ul>
 
    <ng-template [ngIf]="bbb">ng-template ngIf</ng-template>

    <ng-template ngFor let-str [ngForOf]="strs" let-i="index" let-isLast="last" let-isOdd="odd">
      <div>
        ng-template - ngFor - {{ i }} - {{ str }} - 最後:{{ isLast }} - 奇数:{{ isOdd }}
      </div>
    </ng-template>
    `
})
export class AppComponent {
  bbb = false;
  strs: String[] = ["aryA", "aryB", "aryC", "aryD"];
  update(val: string) {
    this.bbb = val == "aaaa";
  }
}

			

実行イメージ



ngFor

テンプレート(HTML)内でループを行う場合、ngForを使います。
				
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  template:
    `  
    <ul>
      <li *ngFor="let str of strs; index as i; first as isFirst ; even as isEven"> 
        *ngFor - {{ i }} - {{ str }} - 最初:{{ isFirst }} - 偶数:{{ isEven }}
      </li>
    </ul>
 
    <ng-template ngFor let-str [ngForOf]="strs" let-i="index" let-isLast="last" let-isOdd="odd">
      <div>
        ng-template - ngFor - {{ i }} - {{ str }} - 最後:{{ isLast }} - 奇数:{{ isOdd }}
      </div>
    </ng-template>
    `
})
export class AppComponent {
  strs: String[] = ["aryA", "aryB", "aryC", "aryD"];
}

			
ダブルクォーテーションの外で変数を使う場合、let-(ハイフン)を付けます。
letはvarと同じように変数定義時に使用するもので、varは再宣言しても良くて、letは再宣言できません。

ngIf

テンプレート(HTML)内でIF分岐を行う場合、ngIfを使います。
				
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  template:
    `
    <input #hello (keyup)="update(hello.value)" placeholder="メソッドの引数" />
    <h1>{{hello.value}}</h1>
  
    <h1 *ngIf="hello.value == 'a'">ngIf</h1>
   
    <ng-template [ngIf]="bbb">ng-template ngIf</ng-template>
    `
})
export class AppComponent {
  bbb = false;
  update(val: string) {
    this.bbb = val == "aa";
  }
}

			


ngSwitch

テンプレート(HTML)内でSWITCH分岐を行う場合、ngSwitchを使います。
				
import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  template:
    `
    <input #hello (keyup)="update(hello.value)" placeholder="メソッドの引数" />
    <h1>{{hello.value}}</h1>
  
    <div [ngSwitch]="hello.value">
      <h1 *ngSwitchCase="'aa'"> 
        ngSwitchCase1
      </h1>
      <h1 *ngSwitchCase="'aaa'"> 
        ngSwitchCase2  
      </h1>
      <h1 *ngSwitchDefault> 
        default  
      </h1>
    </div>
    `
})
export class AppComponent {
  update(value: string) {
  }
}

			


ng-template

テンプレート(HTML)内で実際のタグを使わず、Angularの処理を行いたいだけの場合、ng-templateタグを使用します。
				

import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  template:
    `
    <input #hello (keyup)="update(hello.value)" placeholder="メソッドの引数" />
    <h1>{{hello.value}}</h1>

    <ng-template [ngIf]="bbb">ng-template ngIf</ng-template>

    <ng-template ngFor let-str [ngForOf]="strs" let-i="index" let-isLast="last" let-isOdd="odd">
      <div>
        ng-template - ngFor - {{ i }} - {{ str }} - 最後:{{ isLast }} - 奇数:{{ isOdd }}
      </div>
    </ng-template>
    `
})
export class AppComponent {
  bbb = false;

  update(value: string) {
    this.bbb = value == "aaaa";
  }
}

			




ページのトップへ戻る