Você pode usar ViewChild
para acessar a entrada em seu componente. Primeiro, você precisa adicionar #someValue
à sua entrada para que possa lê-la no componente:
<input #myInput type="file" placeholder="File Name" name="filename" (change)="onChange($event)">
Então, em seu componente, você precisa importar ViewChild
de @angular/core
:
import { ViewChild } from '@angular/core';
Em seguida, você usa ViewChild
para acessar a entrada do modelo:
@ViewChild('myInput')
myInputVariable: ElementRef;
Agora você pode usar myInputVariable
para redefinir o arquivo selecionado porque é uma referência de entrada com #myInput
, por exemplo, o método de criação reset()
que será chamado no click
evento do seu botão:
reset() {
console.log(this.myInputVariable.nativeElement.files);
this.myInputVariable.nativeElement.value = "";
console.log(this.myInputVariable.nativeElement.files);
}
Primeiro console.log
imprimirá o arquivo que você selecionou, depois console.log
imprimirá uma matriz vazia porque this.myInputVariable.nativeElement.value = "";
exclui os arquivos selecionados da entrada. Temos que usar this.myInputVariable.nativeElement.value = "";
para redefinir o valor da entrada porque o FileList
atributo de entrada é somente leitura , então é impossível apenas remover o item do array. Aqui está o Plunker trabalhando .