gpt4 book ai didi

javascript - Angular 4 : setValue formBuilder empty array

转载 作者:数据小太阳 更新时间:2023-10-29 04:25:01 25 4
gpt4 key购买 nike

我有这样的 react 形式:

constructor(...){
this.form = this.formBuilder.group({
name: ['', Validators.compose([Validators.required, Validators.maxLength(50)])],
memes: this.formBuilder.array([
this.initMemes('TrollFace')
])
});
}

initMemes (name?) {
return this.formBuilder.group({
id: [''], name: [name]
});
}

稍后我可以添加更多模因:

addMemes () {
const control = <FormArray>this.form.controls['memes'];
control.push(this.initMemes('anyName'));
}

然后如果我得到表单值,我会得到:

this.form.controls['memes'].value - 我这里有数组

但是有一种情况,当我需要将这个this.form.controls['memes'].value设置为空数组时,怎么可能呢?

如果我这样设置:

this.form.controls['memes'].setValue([])

我收到错误:必须为索引处的表单控件提供一个值:0。

我做错了什么?

最佳答案

编辑:

从较新的版本开始,Angular 现在支持使用 clear() 清除 FormArray:

(<FormArray>this.form.get('memes')).clear();

原创:

尝试了一些方法:reset()setControl(),但以下是我发现唯一可行的解​​决方案,它实际上将整个数组重置为 [],其他选项有效,但它们保留了表单组,只是清空了值。

所以我是如何让它工作的,就是迭代表单数组并删除循环中具有该特定索引的每个表单组:

const control = <FormArray>this.form.controls['memes'];

for(let i = control.length-1; i >= 0; i--) {
control.removeAt(i)
}

如果有更好的方法,欢迎提出建议! :)

关于javascript - Angular 4 : setValue formBuilder empty array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44280926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com