Bạn có thể sử dụng ViewChild
để truy cập đầu vào trong thành phần của mình. Trước tiên, bạn cần thêm #someValue
vào thông tin đầu vào của mình để bạn có thể đọc nó trong thành phần:
<input #myInput type="file" placeholder="File Name" name="filename" (change)="onChange($event)">
Sau đó, trong thành phần của bạn, bạn cần nhập ViewChild
từ @angular/core
:
import { ViewChild } from '@angular/core';
Sau đó, bạn sử dụng ViewChild
để truy cập đầu vào từ mẫu:
@ViewChild('myInput')
myInputVariable: ElementRef;
Bây giờ, bạn có thể sử dụng myInputVariable
để đặt lại tệp đã chọn vì đó là tham chiếu đến đầu vào #myInput
, ví dụ: phương thức tạo reset()
sẽ được gọi trong click
sự kiện nút của bạn:
reset() {
console.log(this.myInputVariable.nativeElement.files);
this.myInputVariable.nativeElement.value = "";
console.log(this.myInputVariable.nativeElement.files);
}
Đầu tiên console.log
sẽ in tệp bạn đã chọn, thứ hai console.log
sẽ in một mảng trống vì this.myInputVariable.nativeElement.value = "";
xóa (các) tệp đã chọn khỏi đầu vào. Chúng ta phải sử dụng this.myInputVariable.nativeElement.value = "";
để đặt lại giá trị của đầu vào vì FileList
thuộc tính của đầu vào là chỉ đọc , vì vậy không thể chỉ xóa mục khỏi mảng. Đây là Plunker đang hoạt động .