gpt4 book ai didi

javascript - PatchValue 或 setValue with formGroup 更多 formArray 和 formGroup

转载 作者:搜寻专家 更新时间:2023-10-30 21:46:50 29 4
gpt4 key购买 nike

我有第二种形式。我需要填写来自银行的日期字段,一个 json 文件。在 populateFields 方法中,我得到一个包含将要填充的数据的参数。但是,它只填充itens的值,即数组内部的描述,它不执行。

错误:

ERROR Error: Uncaught (in promise): TypeError: _this.form.controls.itens.value [i] .description.patchValue is not a function

我尝试使用以下表达式:

this.form.controls.itens.value[i].description.patchValue(item.description); 

但是,我得到了上面提到的错误。

 generateFormGroup(): void {
this.form = this._formBuilder.group({
id: [null],
alias: ['Relatório de Despesa', [Validators.required, Validators.maxLength(50)]],
job: [null, [Validators.required]],
customer: [{ value: null, disabled: true }, [Validators.required]],
contact: [{ value: null, disabled: true }, [Validators.required]],
currency: [{ value: 1, disabled: true }, [Validators.required]],
exchangeRate: [{ value: null, disabled: true }],
advanceValue: ['0'],
itens: this._formBuilder.array([this.createItem()]),
});
}

createItem(): any {
return this._formBuilder.group({
id: [null],
product: [null, [Validators.required]],
productIcon: [null],
description: this._formBuilder.group({
descriptionProduct: [null],
origin: [null],
km: [null],
destination: [null],
rental: [null],
days: [null],
reason: [null],
taglist: [null]
}),
date: [this.today, [Validators.required]],
value: [0, [Validators.required, Validators.min(0.01)]],
currency: [{ value: 1, disabled: true }, [Validators.required]],
currencyAlias: [this.currency],
receipt: [null],
isLoading: [false],
receiptId: [null],
receiptExtension: [null],
});
}

populateFields(data: any): void {
data.itens.forEach((item, i) => {
this.form.controls.itens.value [i] .description.patchValue (item.description) // error
}
this.itens = data.itens;
this.form.controls.itens.patchValue(data.itens);

}

最佳答案

this.form['controls']['itens']['controls'][index]['controls'].description.patchValue(item.description);

更新:

我使用方括号表示法访问属性来抑制错误,例如 Property 'controls' does not exist on type 'AbstractControl'

您可以在 this Github Page 上阅读更多相关信息

只有当您有多个级别的表单控件时,这才是一个问题。如果你有一些直接的东西,你可以使用 . 符号甚至 .get() 方法来访问控件

this.form.controls.someControl.patchValue(someValue)

this.form.get('someControl').patchValue(someValue)

上面两个做同样的事情。如果是简单的表单数组,可以使用.at()方法

结合这些并进行一些类型转换,你可以做这样的事情

((this.form.get('controls') as FormArray).at(index) as FormGroup).get('description').patchValue(item.description);

理论上上面的应该可行:)

关于javascript - PatchValue 或 setValue with formGroup 更多 formArray 和 formGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53575046/

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