คุณสามารถใช้ViewChild
เพื่อเข้าถึงอินพุตในคอมโพเนนต์ของคุณ ขั้นแรกคุณต้องเพิ่ม#someValue
ข้อมูลที่คุณป้อนเพื่อให้คุณสามารถอ่านได้ในองค์ประกอบ:
<input #myInput type="file" placeholder="File Name" name="filename" (change)="onChange($event)">
จากนั้นในส่วนประกอบของคุณคุณต้องนำเข้าViewChild
จาก@angular/core
:
import { ViewChild } from '@angular/core';
จากนั้นคุณViewChild
จะใช้เพื่อเข้าถึงอินพุตจากเทมเพลต:
@ViewChild('myInput')
myInputVariable: ElementRef;
ตอนนี้คุณสามารถใช้myInputVariable
เพื่อรีเซ็ตไฟล์ที่เลือกได้เนื่องจากเป็นการอ้างอิงถึงการป้อนข้อมูลด้วย#myInput
ตัวอย่างเช่นสร้างวิธีการreset()
ที่จะเรียกใช้ในclick
กรณีที่ปุ่มของคุณ:
reset() {
console.log(this.myInputVariable.nativeElement.files);
this.myInputVariable.nativeElement.value = "";
console.log(this.myInputVariable.nativeElement.files);
}
ขั้นแรกconsole.log
จะพิมพ์ไฟล์ที่คุณเลือกอันดับที่สองconsole.log
จะพิมพ์อาร์เรย์ว่างเนื่องจากthis.myInputVariable.nativeElement.value = "";
ลบไฟล์ที่เลือกออกจากอินพุต เราต้องใช้this.myInputVariable.nativeElement.value = "";
เพื่อรีเซ็ตค่าของอินพุตเนื่องจากFileList
แอตทริบิวต์ของอินพุตเป็นแบบอ่านอย่างเดียวดังนั้นจึงเป็นไปไม่ได้ที่จะลบรายการออกจากอาร์เรย์ นี่คือPlunker ที่ใช้งานได้