[フロントエンド] Angular2+で、data-*へデータバインディングを行う
こんにちは、@yoheiMuneです。
Angular2+(執筆時の最新はバージョン5)で、HTMLタグの
これに対処するために、今回紹介した
https://angular.io/guide/template-syntax#attribute-binding
最後になりますが本ブログでは、フロントエンド、Swift、PHP、Node.js、Python、Linux、Java、インフラ、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
Angular2+(執筆時の最新はバージョン5)で、HTMLタグの
data-xxx
やcolspan
属性へデータをバインディングする方法をブログに書きたいと思います。目次
何をしたいのか
Angular2+で、以下のようなdata-xxx
へデータをバインディングしたいという話です。<div data-item-id="123"></div>
どうすれば良いのか
Angular2+では、[attr.xxx]
とattr
を用いることで、任意のプロパティに値を設定できます。data-item-id
をバインディングしたい場合には、以下のように実装します。<!-- itemId変数に「123」が入っている想定 --> <div [attr.data-item-id]="itemId"></div>
attr
を用いれば基本的には自由にバインディングできるので、[attr.aria-label]="help"
といった使い方もできます。こんなエラーが出る
例えば普通のHTMLのように、以下のような実装をしたとします(colspan
属性を付与しようとしました)。<tr><td colspan="{{1 + 1}}">Three-Four</td></tr>すると、以下のようなエラーが発生します。
Template parse errors: Can't bind to 'colspan' since it isn't a known native propertyここでの問題は確かに
colspan
という属性は存在しますが、Angular的にはcolspan
というプロパティを定義していないぞ、ということでエラーになってしまいます。これに対処するために、今回紹介した
attr
を使います。<tr><td [attr.colspan]="1 + 1">One-Two</td></tr>このようなエラーは最初は解決しづらくて、Angularの辛いとこの1つ。解決策は単純なのですが、対応できるまでに時間がかかっちゃいますよね・・。
参考資料
以下の公式ドキュメントで、attr
が説明されています。https://angular.io/guide/template-syntax#attribute-binding
最後に
今日はライトなネタですが、Angularでのattr
ディレクティブの使い方の説明でした。このようなことは簡単なことですが知らないと調べる時間が必要になるので、ちょっとしたことでも頭に入れておくとコーディングのスピードが早くなっていいですね。最後になりますが本ブログでは、フロントエンド、Swift、PHP、Node.js、Python、Linux、Java、インフラ、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!