Você precisa informar explicitamente ao TypeScript o tipo de HTMLElement que é seu destino.
A maneira de fazer isso é usar um tipo genérico para convertê-lo em um tipo adequado:
this.countUpdate.emit((<HTMLTextAreaElement>e.target).value./*...*/)
ou (como você quiser)
this.countUpdate.emit((e.target as HTMLTextAreaElement).value./*...*/)
ou (novamente, questão de preferência)
const target = e.target as HTMLTextAreaElement;
this.countUpdate.emit(target.value./*...*/)
Isso permitirá ao TypeScript saber que o elemento é um textarea
e saberá da propriedade value.
O mesmo poderia ser feito com qualquer tipo de elemento HTML, sempre que você fornecer ao TypeScript um pouco mais de informação sobre seus tipos, ele retribuirá com dicas adequadas e, claro, menos erros.
Para tornar mais fácil para o futuro, você pode definir diretamente um evento com o tipo de seu destino:
// 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)">
Componente:... this.url = event.target.result;
Algum funciona, às vezes não, quando não err está éerror TS2339: Property 'result' does not exist on type 'EventTarget'
como você sugeriu TS dizer mais sobre isso, no lugarHTMLTextAreaElement
eu tenteiHTMLInputElement
, em seguida,target.value
não mais errar, mas a imagem não está sendo exibida.