javascript - 'string' 类型的参数不可分配给 'AbstractControl' 类型的参数。 Angular react 形式

标签 javascript angular typescript firebase angular-material

我正在尝试使用物质形式将字符串值推送到 formArray 中,但它返回此错误:

Argument of type 'string' is not assignable to parameter of type 'AbstractControl'.

如果我尝试将一个完整的对象插入数组,它可以正常工作,但作为字符串值则不行。这是我声明 formArray 的地方:

this.maintenanceFormGroup = this._formBuilder.group({
      title: '',
      description: ['', Validators.required],
      maintenance_images_url: this._formBuilder.array([]),
  });

这是我尝试将字符串值插入数组的地方:

  const pushDownloadUrlIntoMaintenancePhotosArray = flatMap(() => {
      return this._storage.downloadURL
        .map(url => {
          console.log(url)
          const controls = <FormArray>this.formGroup.controls.maintenance_images_url;
          controls.push(url);
        });
    });

关于我为什么会收到此错误的任何建议?

最佳答案

你应该初始化你的维护图像 url 格式,例如:

const controls = <FormArray>this.maintenanceFormGroup.controls['maintenance_images_url'];
const urlControl = this.initUrl(url);
controls.push(urlControl);

initUrl(url) {
        return this.formBuilder.group({
            value: [url],
        });
    }

更新:

const controls = this.maintenanceFormGroup.get('maintenance_images_url');
if (!controls.value.includes(url)) {
  controls.push(this.formBuilder.control(url));
}

关于javascript - 'string' 类型的参数不可分配给 'AbstractControl' 类型的参数。 Angular react 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51612389/

相关文章:

javascript - 改变一个 :after style if child is img

javascript - javascript 中的 setInterval 和 12 小时制

javascript - Angular/TS promise 会导致乱序执行吗?

angular - 如何订阅组件中的全局事件(例如按键)

javascript - 如何快速实现 materializecss 侧边栏导航打开过渡?

javascript - Angular - 将两个可观察结果合并为一个

javascript - TypeScript:TypeError:App 不是构造函数

jquery - React 和 TypeScript - 如何在不包装在父 div 中的情况下进行渲染?

typescript - 如何定义仅接受某些用户定义类的实例的 Typescript 类型

typescript - 如何使用开源 Typescript 编译器代码提取给定 Typescript 代码的 AST?