「Angular 2」のデータバインディングとディレクティブ記述法
次世代Webアプリケーションフレームワーク「Angular」の活用 第2回
ダウンロード サンプルファイル (34.7 KB)
ディレクティブは記述ルールに着目
AngularJSでは、ディレクティブと呼ばれる独自のHTML記述が利用できます。Angular 2で利用できる全てのディレクティブは、公式WebページのAPIリファレンスで検索できます。
ここでは繰り返し(NgFor)と条件分岐(NgIf)を例に、Angular 2のディレクティブ利用例を説明します。まずAppComponentコンポーネントにリスト8のような変数phonesを定義します。phonesはスマートフォンの情報を格納しており、name(名前)、vendor(メーカー)、locale(国と地域)の値を保持するJavaScriptオブジェクトの配列になります。
phones = [
{"name":"Xperia Z5", "vendor":"ソニー", "locale": "JP"},
{"name":"Galaxy S7 edge", "vendor":"サムスン", "locale": "KR"},
{"name":"Zenfone 3", "vendor":"エイスース", "locale": "TW"},
{"name":"HUAWEI P9", "vendor":"ファーウェイ", "locale": "CN"},
{"name":"arrows M03", "vendor":"富士通", "locale": "JP"},
];
phones配列の各要素を順番に表示するように、ディレクティブをリスト9のように記述します。
<ul>
<!-- *ngFor属性で繰り返し ...(1)-->
<li *ngFor="let phone of phones">
<!-- phoneオブジェクトの値を参照 ...(2)-->
{{phone.name}}は{{phone.vendor}}の製品です。
<!-- *ngIf属性で条件分岐 ...(3)-->
<span *ngIf="phone.locale=='JP'" [ngStyle]="{'color':'red'}">
※国産です
</span>
</li>
</ul>
(1)のliタグに付与された*ngFor属性で繰り返しを指定します。「let phone of phones」は、ループ内でphones配列の各要素をphoneオブジェクトとして参照する意味で、(2)でphoneオブジェクトのname、vendorプロパティをデータバインディングで表示しています。
(3)は条件分岐です。spanタグに付与された*ngIf属性内の「phone.locale=='JP'」で、localeプロパティがJPである場合のみspanタグの内容を表示するよう指定します。[ngStyle]はCSSを設定するAngular 2のディレクティブで、ここでは赤文字になるよう設定しています。
リスト8、9を実行すると図4のようにオブジェクトの各要素がリスト表示され、localeがJPの要素のみ赤文字で「※国産です」が表示されます。
AngularJS 1でリスト9と同じ表示を行う記述はリスト10のようになります。*ngForの代わりにng-repeat属性、*ngIfの代わりにng-if属性、[ngStyle]の代わりにng-style属性を利用します。
<ul>
<!-- ng-repeatで繰り返し -->
<li ng-repeat="phone in phones">
<!-- phoneオブジェクトの値を参照 -->
{{phone.name}}は{{phone.vendor}}の製品です。
<!-- ng-ifで条件分岐 -->
<span ng-if="phone.locale=='JP'" ng-style="{'color':'red'}">
※国産です
</span>
</li>
</ul>
この記事は参考になりましたか?
- 次世代Webアプリケーションフレームワーク「Angular」の活用連載記事一覧
- この記事の著者
-
WINGSプロジェクト 吉川 英一(ヨシカワ エイイチ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
