私は 誰か他の人の質問 に答えようとしました。そして、そうすることで、いくつかのことについて私の心にはかなりの不確実性があることに気づきました。番号付きのポイント1..4について誰かがフィードバックを提供できることを期待しています。
HTMLの関連セクション:
<input type="text" placeholder="Club Name" #clubName>
これをTypeScriptコンポーネントに追加します。
// class properties
@ViewChild('clubName')
inp:HTMLInputElement; // Could also use interface Element
// conditionally set in some other methods of class
inp.setAttribute('readonly', 'readonly');
inp.removeAttribute('readonly');
これは私にとって灰色の領域だと言わざるを得ません。
@ViewChild
でHTMLInputElement
またはElement
を直接参照するのは悪い習慣ですか?のみ、私はよくElementRef
を使用する例や、nativeElement
からElementRef
にチェーンする例を見てきました。VS Studioにはそれらに対するIntelliセンスがないため、突然暗闇でコーディングしているように感じます。つまり、メソッドsetAttributeまたはremoveAttribute、それらのパラメーター要件などに関するフィードバックを受け取ることはありません(キャストするAsも知っています)
<input [attr.readonly]= "isReadOnly">
IIRC TypeScriptで取得するプロパティを使用して、この方法で行う必要があると思います。
get isReadOnly() :boolean {
}
この方法は有効ですか?
<input [attr.readonly]= "isReadOnly()">
TypeScript
isReadOnly() :boolean {
}
この方法は有効ですか?
更新:* ngIFもあるので、同じ名前の2つの入力要素の1つを出力します。しかし、それは私にナットを割る大ハンマーのように聞こえます。
以下を使用する必要があります(Angular 4):
<input [readonly]="isReadOnly">
att.readonly
を使用すると、値がfalseであってもreadonly
属性が存在するため、入力は常に読み取り専用になります。 [readonly]
Angularを使用すると、isReadOnly
がtrueの場合にのみ属性が配置されます。
HTMLでは、入力を読み取り専用にするには以下で十分です。
<input readonly>
<input readonly="{{ variable }}>"
を使用できます。
*。component.tsで、変数を初期化します。
private variable: boolean = true;