如何将对象数组分配给FormGroup中的控件

时间:2019-04-30 16:06:02

标签: angular

在Angular应用中,我通过以下方法将对象列表添加到数组(演示列表)中:

updateList(list: any) {
    this.demolist = Array.apply(this, list);
    console.log(this.demolist);
}

当用户单击下面的“文件上载”控件并添加文档时,就会调用上述方法。

<upload formControlName="fileUpload" #fileUpload (listChange)="updateList($event)" data-kind="primary" [imagePreview]="true" restrictFiles=".pdf,.doc,.docx">
</upload>

当用户单击表单上的Submit按钮时,将执行以下代码:

HTML:

<form (ngSubmit)="onSubmit(emailForm.value)">
</form>

TS:

onSubmit(formContent): void {
    this.postData(formContent);
}

但是目前,提交时表单中的fileUpload控件不包含任何文件。

有人可以告诉我如何将 this.demolist 中的文件添加到 fileUpload 中的控件中我的emailForm使用 updateList()方法?

非常感谢!

1 个答案:

答案 0 :(得分:0)

Angular本身并不支持文件上传。您必须做一些工作才能实现它。对我有用的是,我使用jQuery选择文件要上传到的输入,然后从那里使用FormData接口来获取文件,然后从那里进行操作。由于我使用标准输入来执行此操作,因此您的解决方案将与我的解决方案有所不同,但它应该为您指明正确的方向。

const files = $(`#fileUpload`).prop('files');
if (get(files, '[0].name')) {
    const formData: FormData = new FormData;
    formData.append('file', files[0], files[0].name);
    input.value = formData;
}