Angular 2でWijmoコンポーネントを活用
Wijmo 5をAngular 2と組み合わせて使う最初の例として、Wijmo 5の線形ゲージ(WjLinearGauge)コンポーネントをWebページに配置していきます。
以下では、Angular 2のモジュールやコンポーネントに対して、Wijmoの記述を追加します。モジュールやコンポーネントの詳細については、CodeZineのAngular 2解説記事も参考にしてください。
まず、アプリそのものを表すモジュール(ルートモジュール)の定義ファイルapp.module.tsに、リスト4のようにWijmoを設定します。
// モジュール参照 ...(1)
import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { WjGaugeModule } from "wijmo/wijmo.angular2.gauge";
// コンポーネント参照 ...(2)
import { AppComponent } from "./app.component";
// モジュール定義 ...(3)
@NgModule({
imports: [
BrowserModule,
WjGaugeModule // WjGaugeModuleをインポート ...(4)
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
(1)で、このモジュールが参照する外部のモジュールを記述しています。Angular 2が提供するNgModule、BrowserModuleモジュールと同じ記述形式で、Wijmoのゲージモジュール(WjGaugeModule)が記述できます。(2)はこのアプリで表示されるコンポーネントで、詳細は後述します。(3)のモジュール定義で、imports属性に(4)のようにWjGaugeModuleを指定すると、モジュールがインポートされて、Wijmoのゲージ部品が利用できるようになります。
次に、リスト4(2)のコンポーネント(ルートコンポーネント)を定義するapp.component.tsを、リスト5のように記述します。
// 外部コンポーネント参照 ...(1)
import { Component, ViewChild } from "@angular/core";
import { WjLinearGauge } from "wijmo/wijmo.angular2.gauge"
// コンポーネントのパラメータ指定 ...(2)
@Component({
selector: "my-app",
template: `
<h1>Wijmo + Angular 2 サンプル1</h1>
<!-- WjLinearGaugeコンポーネント ...(3) -->
<wj-linear-gauge style="width:400px"
#gauge
[isReadOnly]="false"
[(value)]="curValue"
(valueChanged)="onValueChanged()">
</wj-linear-gauge>
<!-- LinearGaugeの値を表示 ...(4) -->
<p>value:{{curValue}}</p>
`,
})
// コンポーネントの実装 ...(5)
export class AppComponent {
// WjLinearGaugeオブジェクトの参照 ...(6)
@ViewChild("gauge") gauge: WjLinearGauge;
// WjLinearGaugeの値 ...(7)
curValue:number = 50;
// 値が変更されたときのハンドラ ...(8)
onValueChanged() {
console.debug("value:" + this.gauge.value);
}
}
(1)は、このコンポーネントで利用する外部コンポーネントの参照です。コンポーネントの定義に利用するComponent、コンポーネントの子要素を参照するためのViewChildと同じ記述形式で、Angular 2の線形ゲージ(WjLinearGauge)コンポーネントを参照しています。
(2)でコンポーネントのパラメータを指定します。コンポーネントの表示内容をHTMLで指定するtemplateパラメータに、WjLinearGaugeコンポーネントに対応した<wj-linear-gauge>タグを記述しています(3)。Wijmoコンポーネント名の大文字を小文字に変更して、区切りにハイフンを挿入したものがタグ名になります。
(3)の「#gauge」属性は、コンポーネントをgaugeという変数名で参照する指定で、後述の(6)で利用します。「isReadOnly」属性は画面操作の可否、「value」属性は現在値、「valueChanged」属性は値変更時のイベントハンドラです。詳細は後述します。
(4)は、Angular 2の双方向データバインディングで、線形ゲージの現在値を表示する記述です。
(5)で、コンポーネントのクラスAppComponentを実装しています。(6)は、(3)で変数名を定義した線形ゲージのオブジェクトを、プロパティ変数gaugeで参照する記述です。(7)は線形ゲージの現在値を表すプロパティです。(8)は線形ゲージの値が変更されたときのイベントハンドラで、ここでは線形ゲージオブジェクトgaugeのvalueプロパティ(ゲージの現在値)をログ出力しています。
プロパティ名の記号が持つ意味
リスト5(3)で、<wj-linear-gauge>のプロパティ名にはさまざまな記号がついています。この記号について、リスト6でもう少し詳しく説明します。
<wj-linear-gauge [isReadOnly]="false" // ...(1) [(value)]="curValue" // ...(2) (valueChanged)="onValueChanged()"> // ...(3) </wj-linear-gauge>
(1)は、ゲージを読み取り専用にするプロパティisReadOnlyに、値falseを設定して、マウスクリックで操作可能にすることを表します。このように、[]で囲まれたプロパティには、指定する値そのものを記述します。
(2)は、現在値のプロパティvalueに、コンポーネントのcurValueプロパティの値を設定することを表します。このように、[()]で囲まれたプロパティは、コンポーネントのプロパティとの連結(双方向データバインディング)を表します。
(3)は、値が変更されたときに発生するvalueChangedイベントで、onValueChangedメソッドを実行することを表します。このように、()で囲まれたプロパティは、イベントハンドラを表します。
これらの記述方法はAngular 2で定義されているもので、WijmoをAngular 2で利用する場合は、これらの記述方法に従います。なお、Wijmoコンポーネントのマークアップ構文については、公式ドキュメントで詳細に解説されています。

