Sie müssen TypeScript explizit den Typ des HTMLElement mitteilen, das Ihr Ziel ist.
Der Weg, dies zu tun, besteht darin, einen generischen Typ zu verwenden, um ihn in einen richtigen Typ umzuwandeln:
this.countUpdate.emit((<HTMLTextAreaElement>e.target).value./*...*/)
oder (wie du willst)
this.countUpdate.emit((e.target as HTMLTextAreaElement).value./*...*/)
oder (wieder eine Frage der Präferenz)
const target = e.target as HTMLTextAreaElement;
this.countUpdate.emit(target.value./*...*/)
Dadurch wird TypeScript darüber informiert, dass das Element a ist, textareaund es wird die value-Eigenschaft bekannt.
Dasselbe kann mit jeder Art von HTML-Element gemacht werden. Wenn Sie TypeScript ein bisschen mehr Informationen über ihre Typen geben, werden Sie mit den richtigen Hinweisen und natürlich weniger Fehlern zurückgezahlt.
Um es für die Zukunft einfacher zu machen, möchten Sie möglicherweise ein Ereignis direkt mit dem Typ seines Ziels definieren:
// 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);
}
<img [src]="url"> <br/> <input type='file' (change)="showImg($event)">Komponente:... this.url = event.target.result;Manchmal funktioniert es manchmal nicht, wenn es nicht fehlerhaft ist.error TS2339: Property 'result' does not exist on type 'EventTarget'Wie Sie vorgeschlagen haben, erzählen Sie TS mehr darüber, an der Stelle, an derHTMLTextAreaElementich es versucht habe,HTMLInputElementdanntarget.valuenicht mehr Fehler, aber das Bild wird nicht angezeigt.