[解決済み】タイプ 'EventTarget' にプロパティ 'value' が存在しない。
2022-04-04 08:06:36
質問
Angular 2のコンポーネントコードにTypeScript Version 2を使用しています。
以下のコードで、エラー "Property 'value' does not exist on type 'EventTarget'" が発生します。ありがとうございます。
e.target.value.match(/\S+/g) || []).length
import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'text-editor',
template: `
<textarea (keyup)="emitWordCount($event)"></textarea>
`
})
export class TextEditorComponent {
@Output() countUpdate = new EventEmitter<number>();
emitWordCount(e: Event) {
this.countUpdate.emit(
(e.target.value.match(/\S+/g) || []).length);
}
}
解決方法は?
ターゲットとなるHTMLElementの型をTypeScriptに明示的に伝える必要があります。
その方法は、一般的な型を使って適切な型にキャストすることです。
this.countUpdate.emit((<HTMLTextAreaElement>e.target).value./*...*/)
または(お好みで)
this.countUpdate.emit((e.target as HTMLTextAreaElement).value./*...*/)
または (これも好みの問題ですが)
const target = e.target as HTMLTextAreaElement;
this.countUpdate.emit(target.value./*...*/)
これは、TypeScriptに、その要素が
textarea
で、valueプロパティを知ることができます。
TypeScriptに型についてもう少し情報を与えると、適切なヒントで返してくれるし、もちろんエラーも少なくなる。
将来的には、イベントを直接ターゲットの型として定義することも可能です。
// create a new type HTMLElementEvent that has a target of type you pass
// type T must be a HTMLElement (e.g. HTMLTextAreaElement extends HTMLElement)
type HTMLElementEvent<T extends HTMLElement> = Event & {
target: T;
// probably you might want to add the currentTarget as well
// currentTarget: T;
}
// use it instead of Event
let e: HTMLElementEvent<HTMLTextAreaElement>;
console.log(e.target.value);
// or in the context of the given example
emitWordCount(e: HTMLElementEvent<HTMLTextAreaElement>) {
this.countUpdate.emit(e.target.value);
}
関連
-
[解決済み】プロパティ 'value' が 'HTMLElement' 型の値に存在しない。
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] Angular 4: コンポーネントファクトリが見つかりません。@NgModule.entryComponents に追加しましたか?
-
[解決済み] 型 '{}' は型 '{ title: string; text: string; }' に代入できません。
-
[解決済み] チョキダーからのエラー(C:┣ᴗ┣)。Error: EBUSY: resource busy or locked, lstat 'C:\DumpStack.log.tmp.
-
[解決済み] Angular CLIでコンポーネントの名前を変更する方法は?
-
[解決済み] Angularアプリのシンタックスエラー。予期しないトークン <
-
[解決済み] モジュール 'AppModule' によってインポートされた予期しないディレクティブ 'LoginComponent' があります。NgModuleアノテーションを追加してください。
-
[解決済み] Pythonの@propertyデコレーターはどのように機能するのでしょうか?
-
[解決済み】TypeScriptのEventTarget型にプロパティ'value'が存在しない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】angular 4アプリにReactiveFormsModuleを追加すると、NgControl用のプロバイダがないエラーが発生する。
-
[解決済み] @viewChildが機能しない - プロパティnativeElementがundefinedで読み込めない
-
[解決済み】Angular: オブジェクトをサポートしているdiffが見つからない '[object Object]'
-
[解決済み】プロパティ 'value' が 'HTMLElement' 型の値に存在しない。
-
[解決済み] angularでpreflightのレスポンスがHTTP okステータスにならない
-
[解決済み] Angular material Angular Material コアテーマが見つかりませんでした。
-
[解決済み] ionInputとionChangeで有意差あり
-
[解決済み] Angular 6 Error trying to diff '[object Object]'. 配列と反復記号のみが許可されます。
-
[解決済み] このメソッドをリファクタリングして、認知的複雑度を21から許容される15に下げます。リファクタリングして複雑さを軽減する方法
-
[解決済み] Angular InjectionTokenが「No provider for InjectionToken」をスローします。