angular - 角度上传文件的 PatchValue
问题描述
并组成一个这样的小组
this.editMateri = this.fb.group({
name: [''],
description: [''],
thumbnail: [null],
isPublish: this.status,
materialCreatorCode: [''],
tags: this.selectedTags
});
我从服务器获取数据并将值设置为使用patchValue
这样的表单
this.editMateri.patchValue(this.currentMateri);
一切正常,但问题在于缩略图文件上传输入,默认情况下它为空,所以如果我更新缩略图以外的任何内容,我的缩略图将变为空白,缩略图设置为空。我一直在为此寻找 stackblitz 代码,但我没有找到,任何人都可以帮助我吗?
编辑
在我的 html 中像这样
<div class="form-group">
<label for="exampleInputEmail1" class="label">Thumbnail</label>
<input type="file" nbInput fullWidth (change)="uploadFile($event)">
</div>
对于像这样的uploadFile函数
uploadFile(event) {
const file = (event.target as HTMLInputElement).files[0];
this.editMateri.patchValue({
thumbnail: file
});
this.editMateri.get('thumbnail').updateValueAndValidity()
}
解决方案
我猜您已经为每个字段正确添加了formControlName 。这就是为什么一切正常。
但是在为缩略图上传图像的输入中,您错过了使用formControlName。
一旦你将它添加到你的 html 中,它应该可以正常工作。
请参考以下要替换的html代码。
<div class="form-group">
<label for="exampleInputEmail1" class="label">Thumbnail</label>
<input type="file" nbInput fullWidth formControlName="thumbnail" (change)="uploadFile($event)">
</div>
推荐阅读
- javascript - Ajax 在第一次调用时很好地加载库,但在第二次调用时不加载库
- xpath - 如何使用 XPath 查找一组元素中选择组的属性的最小值/最大值?
- linkedin - LinkedIn 共享帖子 URL 与参数
- arrays - 如何在以下 json 数组中获取 f1 的值为 1 - '[1,2,3,{"f1":1,"f2":[5,6]},4]' 使用内置函数
- drag-and-drop - 从一个地方拖放到另一个地方的多个地方
- mysql - 我们如何防止 MySQL 的 SQL 注入?
- actions-on-google - 允许用户在 Google Home 设备上选择任何选项
- azure-devops - 如何将 YAML 中的计划触发器与本地 Azure DevOps 2019 一起使用?
- ios - ios 13 导航控件在 CNContactViewController 中向下滑动选择器以添加个人资料图片时消失?
- html - CodeMirror - 格式化 HTML 自闭标签?