如何以角度设置电抗形式的值?

时间:2019-12-19 10:40:11

标签: angular file-upload

我想更新用户配置文件页面,在该页面中,当组件初始化时,我使用patchValue在onInit函数上显示数据。我编写的代码如下: 我之所以使用patchValue,是因为作为响应,我还有另一个数据。

CreateSomeObject

现在,问题是我无法将selectedImage变量设置为formData(FormData()的实例)。 请帮忙!

1 个答案:

答案 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 );