checked
チェックボックスなどの要素属性を条件付きで追加するにはどうすればよいですか?
Angular の以前のバージョンには がありNgAttr
、それらはすべて私が求めている機能を提供しているように思われますNgChecked
。ただし、これらの属性は Angular 2 には存在しないようで、この機能を提供する他の方法は見当たりません。
ベストアンサー1
null
削除します:
[attr.checked]="value ? '' : null"
または
[attr.checked]="value ? 'checked' : null"
ヒント:
属性とプロパティ
checked
このバインディングを追加する HTML 要素に、バインディングで使用される名前 (この場合は )のプロパティがなく、 を持つ同じ要素に Angular コンポーネントまたはディレクティブが適用されていない場合は@Input() checked;
、 は[xxx]="..."
使用できません。
そのようなプロパティがない場合にバインドするもの
達成したい内容に応じて、代替案は[style.xxx]="..."
、、となります。[attr.xxx]="..."
[class.xxx]="..."
<input>
属性のみがありchecked
、checked
プロパティがないため[attr.checked]="..."
、この特定のケースでは正しい方法ではありません。
属性は文字列値のみを扱うことができる
[attr.xxx]="..."
よくある落とし穴は、バインディングの場合、値 ( ...
) が常に文字列化されることです。プロパティと のみが@Input()
、ブール値、数値、オブジェクトなどの他の値型を受け取ることができます。
要素のほとんどのプロパティと属性は接続されており、同じ名前を持ちます。
プロパティと属性のつながり
属性にバインドされている場合、プロパティも属性から文字列化された値のみを受け取ります。
プロパティにバインドされている場合、プロパティはバインドされている値 (ブール値、数値、オブジェクトなど) を受け取り、属性は再び文字列化された値を受け取ります。
属性名とプロパティ名が一致しない 2 つのケース。
- Angular 2.0 テンプレートのラベルに「for」属性を追加中にエラーが発生しました
https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/htmlFor(説明の最初の文を参照してください
htmlFor property reflects the value of the for
-for
C または JavaScript のキーワードであるため、おそらく機能しませんでした)
<label [for]="
Angularはそれ以降変更され、これらの特殊なケースを認識して処理するため、そのようなプロパティが存在しない場合でも にバインドできます( も同様ですcolspan
)。