Angularで要素オブジェクトのプロパティに値を「バインド」するには?(Property Binding)Angular TIPS

要素のプロパティに値をバインドするProperty Bindingについて、「[プロパティ名] = "式"」「bind-プロパティ名 = "式"」「{{プロパティ名}}」という3つのバインディング構文を説明する。

» 2017年01月30日 05時00分 公開
[山田祥寛]
「Angular TIPS」のインデックス

連載目次

現在では、Web標準技術を利用したアプリ開発が広く普及し、そのためのフレームワークも多数存在しています。その中でも主流のフレームワークの1つである「Angular」を活用し、そのための知識を備えることには大きな意味があります。本連載は、Angularユーザーに向けて、その使いこなしTIPSを紹介するものです。なお、本連載は「Build Insider」で公開していた連載「Angular Tips」を同サイトおよび筆者の了解を得たうえで、本フォーラムに移行したものです。記事はBuild Insiderで公開した状態のまま移行しているため、用語統一などの基準が@ITの通常の記事とは異なる場合があります。


【対応バージョン】

 Angular 2/4対応。v2時点で執筆し、v4時点で内容を確認・検証しました。


 Property Bindingを利用することで、要素*1のプロパティに値をバインドすることができます。例えば以下は、<a>要素のhrefプロパティに対して、AppComponentコンポーネントのurlプロパティをバインドする例です。

*1 ここではHTML要素を例にしていますが、自作コンポーネントのプロパティに対して値をバインドすることもできます。具体的な例については、後日別稿で解説の予定です。


import { Component } from '@angular/core';
@Component({
  selector: 'app-root',
  template: `<a [href]="url">サポートサイトへ</a>`
})
export class AppComponent {
  url = 'http://www.wings.msn.to/';
}

要素のhrefプロパティに対して値をバインドする例(app/app.component.ts)

<a ……省略…… href="http://www.wings.msn.to/">サポートサイトへ</a>

実行結果のHTMLソース(該当箇所の抜粋)

 Property Bindingでは、対象となるプロパティをブラケットで括るのが基本です。

[構文]Property Binding

[プロパティ名] = "式"


 式のコンテキストはコンポーネントのインスタンスなので、この場合であれば、単に「url」とすることで、AppComponentコンポーネントのurlプロパティを参照しなさい、という意味になります。その他、式の制限については、別稿「TIPS:コンポーネントの値をビューに反映させるには?」も併せて参照してください。

Property Bindingの別構文

 別解として、以下の構文を利用することもできます。

【1】bind-xxxxx属性

 「bind-プロパティ名="式"」でも、式をプロパティに割り当てることが可能です。例えば冒頭の例であれば、以下のように表せます。

@Component({
  selector: 'app-root',
  template: `<a bind-href="url">サポートサイトへ</a>`
})

bind-xxxxx属性を利用した場合のコード(app/app.component.ts)

【2】{{...}}

 プロパティ値に対して別稿で利用した{{...}}(ブラケット構文)を利用することも可能です。

@Component({
  selector: 'app-root',
  template: `<a href="{{url}}">サポートサイトへ</a>`
})

{{...}}を利用した場合のコード(app/app.component.ts)

 いずれの構文を利用するかは好みにもよりますが、まずはアプリの中では統一していくべきです。本連載では、ブラケット構文を優先して利用していきます。

処理対象:テンプレート構文(Template Syntax) カテゴリ:基本
処理対象:Property Binding(プロパティバインディング) カテゴリ:テンプレート構文(Template Syntax)
処理対象:バインディング構文(Binding Syntax) カテゴリ:テンプレート構文(Template Syntax)
処理対象:[プロパティ名] = "式"|bind-プロパティ名 = "式"|{{プロパティ名}} カテゴリ:テンプレート構文(Template Syntax) > バインディング構文(Binding Syntax)


「Angular TIPS」のインデックス

Angular TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。