次のコードは Angular 4 ですが、なぜ期待どおりに動作しないのかわかりません。
以下は私のハンドラーの抜粋です:
onUpdatingServerName(event: Event) {
console.log(event);
this.newserverName = event.target.value; //this wont work
}
HTML 要素:
<input type="text" class="form-control" (input)="onUpdatingServerName($event)">
コードにエラーが発生します:
プロパティ「value」はタイプ「EventTarget」に存在しません。
しかし、 からわかるように、 にconsole.log
はその値が存在しますevent.target
。
ベストアンサー1
event.target
ここでは、HTMLElement
すべての HTML 要素の親である がありますが、プロパティ を持つことは保証されていませんvalue
。TypeScript はこれを検出し、エラーをスローします。適切な HTML 要素にキャストして、 であり、プロパティを持っているevent.target
ことを確認します。HTMLInputElement
value
(event.target as HTMLInputElement).value
パードキュメント:
入力してください
$event
上記の例では、 を型
$event
としてキャストしますany
。これにより、コストはかかりますが、コードが簡素化されます。イベント オブジェクトのプロパティを明らかにして、愚かな間違いを防ぐことができる型情報はありません。[...]
は
$event
特定の になりましたKeyboardEvent
。すべての要素に プロパティがあるわけではないので、入力要素にvalue
キャストされます。target
(強調は筆者による)