È possibile utilizzare ViewChild
per accedere all'ingresso nel componente. Innanzitutto, devi aggiungere #someValue
al tuo input in modo da poterlo leggere nel componente:
<input #myInput type="file" placeholder="File Name" name="filename" (change)="onChange($event)">
Quindi nel tuo componente devi importare ViewChild
da @angular/core
:
import { ViewChild } from '@angular/core';
Quindi si utilizza ViewChild
per accedere all'input dal modello:
@ViewChild('myInput')
myInputVariable: ElementRef;
Ora puoi myInputVariable
reimpostare il file selezionato perché è un riferimento all'input con #myInput
, ad esempio crea il metodo reset()
che verrà chiamato click
all'evento del tuo pulsante:
reset() {
console.log(this.myInputVariable.nativeElement.files);
this.myInputVariable.nativeElement.value = "";
console.log(this.myInputVariable.nativeElement.files);
}
Il primo console.log
stamperà il file selezionato, il secondo console.log
stamperà un array vuoto perché this.myInputVariable.nativeElement.value = "";
elimina i file selezionati dall'input. Dobbiamo utilizzare this.myInputVariable.nativeElement.value = "";
per ripristinare il valore dell'input perché l' FileList
attributo di input è di sola lettura , quindi è impossibile rimuovere semplicemente l'elemento dall'array. Ecco Plunker al lavoro .