Вам потрібно чітко вказати TypeScript типу HTMLElement, який є вашою ціллю.
Спосіб це зробити, використовуючи загальний тип, щоб передати його правильному типу:
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 знати, що елемент є a, textarea
і він дізнається про значення властивості.
Те ж саме можна зробити з будь-яким елементом HTML, коли ви даєте 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);
}
<img [src]="url"> <br/> <input type='file' (change)="showImg($event)">
Компонент:... this.url = event.target.result;
Іноді це працює іноді, коли це не помиляється.error TS2339: Property 'result' does not exist on type 'EventTarget'
Як ви запропонували, скажіть про це більше TS, замість того, щоHTMLTextAreaElement
я спробувавHTMLInputElement
тодіtarget.value
не більше помилка, але зображення не відображається