最新トレンドを取り込んで進化する次世代AngularJS「Angular 2」最初の一歩
次世代Webアプリケーションフレームワーク「Angular」の活用 第1回
ダウンロード サンプルファイル (13.2 KB)
サンプルコードを書き換えてデータバインディングを試す
データバインディングは変数の値と画面表示を結びつけるAngularJSの特徴的な機能です。Angular 2でデータバインディングを試すため、サンプルコードを少し書き換えてみます。app.component.tsをリスト7のように変更します。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: '<h1>{{helloMessage}}</h1>' // バインド記述 ...(1)
})
export class AppComponent {
// バインドされる変数 ...(2)
helloMessage = 'Message from AppComponent';
}
バインドされる変数helloMessageを(2)のように記述して、テンプレートでは(1)のように「{{ }}」で変数名を囲んで参照します。この記法はAngularJS 1と同じなので、経験者にはなじみやすいでしょう。
リスト7を実行すると図7のように表示され、データバインディングが行われていることがわかります。
Angular 2のモジュール機能を先取りで体験
ここまでは1個のコンポーネントを扱ってきましたが、Angular 2では1ページに複数のコンポーネントを含めることができます。リスト8のように2個目のコンポーネントapp.component2.tsを作ってみます。
import { Component } from '@angular/core';
@Component({
selector: 'my-app-2', // タグ定義 ...(1)
styles: ['.header {color:blue;}'], // スタイル定義 ...(2)
template: '<h1 class="header">{{helloMessage}}</h1>'
})
export class AppComponent2 {
helloMessage = 'Message from AppComponent 2';
}
(1)で2個目のコンポーネントを埋め込むタグ(<my-app-2>タグ)を指定します。また(2)のstylesに、コンポーネント内で利用するスタイル定義(CSS)を記述します。ここではtemplate内のh1タグに指定するheaderクラスで、青のテキスト色を指定しています。
1個目のコンポーネントもリスト9のように修正します。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
styles: ['.header {color:red;font-style:italic}'], // スタイル定義 ...(1)
template: '<h1 class="header">{{helloMessage}}</h1>'
})
export class AppComponent {
helloMessage = 'Message from AppComponent';
}
(1)のスタイル定義で、headerクラスに赤のテキスト色とイタリックの表示を指定しています。リスト8とリスト9で同じheaderクラスに異なる指定をしていることに注目してください。
コンポーネントが2個になったので、main.tsの起動処理はリスト10のように、それぞれのコンポーネントを参照して起動するように修正します。
import { bootstrap } from '@angular/platform-browser-dynamic';
import { AppComponent } from './app.component';
import { AppComponent2 } from './app.component2';
bootstrap(AppComponent);
bootstrap(AppComponent2);
またindex.htmlには2個目のコンポーネントが設定される<my-app-2>タグを追記します。
<body> <my-app>Loading...</my-app> <my-app-2>Loading...</my-app-2> </body>
リスト8~リスト11を実行すると図8のように、それぞれのコンポーネントが指定されたスタイルで表示されます。1個目のコンポーネントに指定された斜体表示が2個目のコンポーネントに反映されていないことから、単なるスタイルの上書きではなく、別個のスタイルが適用されていることがわかります。
一般にCSSのスタイル指定はWebページ全体で共有されるため、ページの一部をモジュールとして入れ替える場合はスタイルの競合へ配慮が必要です。しかしAngular 2ではコンポーネント間の独立性が保たれており、スタイル指定が競合する心配がありません。このようにWebページのモジュール化が可能な点は、Angular 2の大きな特徴と言えます。
まとめ
本記事では、AngularJSの次期バージョン「Angular 2」について、主な特徴を紹介するとともに、Angular 2のコードを書き始めるためのサンプルプロジェクトを作成し、データバインディングやモジュール化の機能を動作確認しました。
Angular 2はJavaScript最新仕様への追従やモジュール化の考え方など、より先進的な機能を取り入れた進化を果たしている一方で、AngularJS 1からの変更点も多く、経験者であっても学ぶべきことは少なくありません。本連載ではAngular 2の機能を順次紹介していきます。次回はAngular 2のディレクティブ(独自タグ)と、今回紹介したデータバインディングの詳細について解説します。
参考資料
この記事は参考になりましたか?
既に会員の方はを行ってください。
- 次世代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編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
