You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 8中点击Cancel按钮重置HTML file input及文件展示容器的实现问题

Angular 8 文件选择重置功能实现

1. 调整HTML模板

给Cancel按钮绑定点击事件,传入已定义的模板引用变量#fileUpload用于操作文件输入框DOM,同时补充文件大小展示位:

<div class="container">
   文件名:{{fileName}} <br>
   文件大小:{{fileSize}}
</div>
<input type="file" class="custom-file-input" id="inputGroupFile02" 
       (change)="onSelectFile($event)" accept=".xlsx, .xls, .csv" #fileUpload>
<span class="input-group-text sidebutton" id="" (click)="resetFile(fileUpload)">Cancel</span>

2. 修改组件TS逻辑

首先补充需要的响应式属性,调整文件选择逻辑增加大小计算,新增重置方法:

// 组件类内先定义对应属性
selectedFiles: FileList | null = null;
fileName: string = '';
fileSize: string = '';
previews: any[] = [];

onSelectFile(event: any): void {
  this.selectedFiles = event.target.files;
  if (this.selectedFiles?.length) {
    const targetFile = this.selectedFiles[0];
    this.fileName = targetFile.name;
    // 计算文件大小并做单位转换
    const fileByte = targetFile.size;
    if (fileByte < 1024) {
      this.fileSize = fileByte + ' B';
    } else if (fileByte < 1024 * 1024) {
      this.fileSize = (fileByte / 1024).toFixed(2) + ' KB';
    } else {
      this.fileSize = (fileByte / (1024 * 1024)).toFixed(2) + ' MB';
    }
    this.previews = [];
  }
}

// 新增重置方法
resetFile(fileInput: HTMLInputElement): void {
  // 清空所有展示数据
  this.fileName = '';
  this.fileSize = '';
  this.selectedFiles = null;
  this.previews = [];
  // 手动清空file输入框的值,解决重复选择同文件不触发change事件的问题
  fileInput.value = '';
}

内容的提问来源于stack exchange,提问作者Anjali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:45:11