角:删除文件列表中的一项?

时间:2018-11-29 10:25:47

标签: javascript angular

在这里我选择了多个图像并使用assertEquals(returnedValue.getMonthNrInYear(), 11); 进行显示,然后在其中放置了一个删除按钮,该按钮显示在屏幕快照中,单击“删除”按钮我想从所选列表中删除所选图像,但是我尝试了以下代码,没有得到适当的解决方案。

This is My UI sceenshot

add.component.html

*ngFor

add.component.ts

<button mat-raised-button (click)="fileInput.click()">Select File</button>

<input style="display: none" type="file" (change)="onFileChanged($event)" #fileInput multiple="true">

<div *ngFor="let selected of selectedFile;let index = index">
  <h3>{{selected.name}}</h3>
  <button mat-icon-button (click)="removeSelectedFile(index)">delete</button>
</div>

5 个答案:

答案 0 :(得分:6)

HTML代码:

<button mat-raised-button (click)="fileInput.click()">Select File</button>

<input style="display: none"  #attachments type="file" (change)="onFileChanged($event)" #fileInput multiple="true">

<div *ngFor="let selected of listOfFiles;let index = index">
  <h3>{{selected}}</h3>
  <button mat-icon-button (click)="removeSelectedFile(index)">delete</button>
</div>

和TS代码:

导入此:

import { Component, OnInit, Inject, ViewChild } from '@angular/core';

在您的组件类中:

@ViewChild('attachments') attachment: any;

selectedFile: File;
fileList: File[] = [];
listOfFiles: any[] = [];

onFileChanged(event: any) {
    for (var i = 0; i <= event.target.files.length - 1; i++) {
      var selectedFile = event.target.files[i];
      this.fileList.push(selectedFile);
      this.listOfFiles.push(selectedFile.name)
  }

  this.attachment.nativeElement.value = '';
}



removeSelectedFile(index) {
 // Delete the item from fileNames list
 this.listOfFiles.splice(index, 1);
 // delete file from FileList
 this.fileList.splice(index, 1);
}

如果您发现由于我已使用@ViewChild重设value = ''而无法再上传已删除的文件,那么您可以再次选择已删除的文件。

这是一个有效的StackBlitz示例。

答案 1 :(得分:2)

您可以检查此Multiple file upload delete,如果您需要任何澄清,请告诉我。

答案 2 :(得分:0)

您应该将其从selectedFile数组中删除。

this.selectedFile.splice(index, 1);

答案 3 :(得分:0)

event.target.files已经是一个数组,这就是为什么您可以使用ngFor对其进行迭代的原因。 当您分配selectedFile = event.target.files时,就是将其设为一个数组。 试试这个:

selectedFile: File;
ArrayOfSelectedFile = new Array<string>();

onFileChanged(event : any) {
  this.selectedFile = event.target.files[0];
  this.ArrayOfSelectedFile = event.target.files;
}

removeSelectedFile(index){
  this.ArrayOfSelectedFile.splice(index,1);
}

<div *ngFor="let selected of ArrayOfSelectedFile;let index = index">
  <h3>{{selected.name}}</h3>
  <button mat-icon-button (click)="removeSelectedFile(index)">delete</button>
</div>

答案 4 :(得分:0)

在您的html代码中

 <label class="form-label">Add Images</label>
      <input type="file"
             class="form-control"
             (change)="onSelectFile($event)"
             multiple accept="image/*" />
    </div>

//这是您的ts代码

onSelectFile(event) {
if (event.target.files && event.target.files[0]) {
  var filesAmount = event.target.files.length;
  for (let i = 0; i < filesAmount; i++) {
    var reader = new FileReader();

    reader.onload = (event: any) => {
      this.imageurls.push({ base64String: event.target.result, });
     }
    reader.readAsDataURL(event.target.files[i]);
    }
  }
 }

有关更多详细信息:https://findandsolve.com/articles/how-to-upload-and-remove-multiple-image-using-anular-code-example