我想更新用户配置文件页面,在该页面中,当组件初始化时,我使用patchValue在onInit函数上显示数据。我编写的代码如下: 我之所以使用patchValue,是因为作为响应,我还有另一个数据。
CreateSomeObject
现在,问题是我无法将selectedImage变量设置为formData(FormData()的实例)。 请帮忙!
答案 0 :(得分:0)
首先,您必须选择user_img
控制器,然后将值仅修补到该控制器。
this.updateForm.get('user_img').patchValue(...)
附加到FormData
export function appendToDataForm(
key: string, value: any | Array<any>, form: FormData = new FormData()
): FormData {
for (const val of toArray(value)) {
form.append(key, toBlob(val));
}
return form;
}
function toBlob(val: any): Blob {
if (!istBlob(val)) {
return new Blob([isString(val) ? val : JSON.stringify(val)], { type: 'application/json' });
}
return val;
}
export function toArray<T>(val: T | T[]): T[] {
return Array.isArray(val) ? val : [val];
}
export function isBlob(val: any): boolean {
return (val instanceof Blob) && typeof val === 'object';
}
export function isString(value: any): boolean {
return typeof value === 'string';
}
使用它:
const form = new FormData();
appendToDataForm('file', this.selectedImage, form);
appendToDataForm('name', , this.updateForm.get('name').value, form );
appendToDataForm('email', , this.updateForm.get('email').value, form );
appendToDataForm('mobile', , this.updateForm.get('mobile').value.internationalNumber, form );