Angular 2 データ表示

この章では、データをユーザーインターフェースに表示する方法を紹介します。以下の3つの方法を使用できます。

  • 補間式を使用してコンポーネントのプロパティを表示する
  • NgFor を使用して配列型プロパティを表示する
  • NgIf を使用して条件に応じた表示を実現する

補間式を使用してコンポーネントのプロパティを表示する

コンポーネントのプロパティを表示するには、補間が最も簡単な方法です。形式は次のとおりです。{{プロパティ名}}。

以下のコードはAngular 2 TypeScript 環境設定に基づいて作成されています。この章でソースコードをダウンロードし、以下に挙げるいくつかのファイルを変更できます。

app/app.component.ts ファイル:

import { Component } from '@angular/core'; @Component({ selector: 'my-app', template: ` <h1>{{title}}</h1> <h2>好きなウェブサイト:{{mySite}}</h2> ` }) export class AppComponent { title = 'サイトリスト'; mySite = 'サンプル'; }

Angular はコンポーネントから title と mySite プロパティの値を自動的に抽出し、ブラウザに表示します。表示情報は次のとおりです。

注意:テンプレートはバッククォート (`) で囲まれた複数行の文字列であり、シングルクォート (') ではありません。


ngFor を使用して配列プロパティを表示する

複数のサイトをループ出力することもできます。以下のファイルを変更します。

app/app.component.ts ファイル:

import { Component } from '@angular/core'; @Component({ selector: 'my-app', template: ` <h1>{{title}}</h1> <h2>好きなウェブサイト:{{mySite}}</h2> <p>サイトリスト:</p> <ul> <li *ngFor="let site of sites"> {{ site }} </li> </ul> ` }) export class AppComponent { title = 'サイトリスト'; sites = ['サンプル', 'Google', 'Taobao', 'Facebook']; mySite = this.sites[0]; }

コードでは、テンプレート内で Angular の ngFor ディレクティブを使用して sites リストの各エントリを表示しています。*ngFor の前のアスタリスク (*) を忘れないでください。

変更後、ブラウザには次のように表示されます。

この例では ngFor は配列をループしていますが、実際には ngFor は任意の反復可能なオブジェクトを反復処理できます。

次に、app ディレクトリに site.ts ファイルを作成します。コードは次のとおりです。

app/site.ts ファイル:

export class Site { constructor( public id: number, public name: string) { } }

上記のコードでは、コンストラクタと id および name という2つのプロパティを持つクラスを定義しています。

次に、Site クラスの name プロパティをループ出力します。

app/app.component.ts ファイル:

import { Component } from '@angular/core'; import { Site } from './site'; @Component({ selector: 'my-app', template: ` <h1>{{title}}</h1> <h2>好きなウェブサイト:{{mySite.name}}</h2> <p>サイトリスト:</p> <ul> <li *ngFor="let site of sites"> {{ site.name }} </li> </ul> ` }) export class AppComponent { title = 'サイトリスト'; sites = [ new Site(1, 'サンプル'), new Site(2, 'Google'), new Site(3, 'Taobao'), new Site(4, 'Facebook') ]; mySite = this.sites[0]; }

変更後、ブラウザには次のように表示されます。


NgIf による条件付き表示

NgIf を使用して、指定した条件のデータを出力するように設定できます。

次の例では、サイト数が3つ以上の場合にメッセージを出力するように判定します。以下の app.component.ts ファイルを変更します。コードは次のとおりです。

app/app.component.ts ファイル:

import { Component } from '@angular/core'; import { Site } from './site'; @Component({ selector: 'my-app', template: ` <h1>{{title}}</h1> <h2>好きなウェブサイト:{{mySite.name}}</h2> <p>サイトリスト:</p> <ul> <li *ngFor="let site of sites"> {{ site.name }} </li> </ul> <p *ngIf="sites.length > 3">好きなサイトがたくさんあります!</p> ` }) export class AppComponent { title = 'サイトリスト'; sites = [ new Site(1, 'サンプル'), new Site(2, 'Google'), new Site(3, 'Taobao'), new Site(4, 'Facebook') ]; mySite = this.sites[0]; }

変更後、ブラウザには次のように表示され、下部にヒント情報が追加されます。

その他の拡張