【发布时间】:2018-07-31 11:32:52
【问题描述】:
我正在尝试使用材料形式将字符串值推送到 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);
});
});
关于我为什么会收到此错误的任何建议?
【问题讨论】:
-
为什么要将字符串推入包含表单控件的 FormArray 中?你能解释一下 this._storage.downloadURL 后面是什么吗?
-
@jmachnik 图像的 URL 的字符串值存储在那里
-
标题为''的部分效果好吗?不应该是标题:[''] 等
-
controls.push(new FormControl(url)) -
您的变量名可能会让您感到困惑。
controls实际上不是一个控件数组,它是您的maintenance_images_urlFormArray。检查docs 显示FormArray.push()期待一个AbstractControl,而您正在推送一个字符串。
标签: javascript angular typescript firebase angular-material