- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有第二种形式。我需要填写来自银行的日期字段,一个 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/
这是我想要完成的: 在一个页面中,用户将能够上传他们对某些外汇对的保护。因此,用户可以选择不同的时间范围来上传他们的图像分析。我的表格很简单: dataForm: FormGroup; this.da
我不知道如何重置 FormArray 的单个字段,例如: myForm = this.fb.group( { title: ["", [Validators.r
我正在尝试在 formarray 中实现 formarray 但它不起作用,下面也尝试过但不起作用。 How to get FormArrayName when the FormArray is ne
我用 ControlValueAccessor 构建了一个自定义输入组件,它非常适合添加标签作为选择。 ( Stackblitz ) 我的问题是: 当我在表单中实现组件时(城市和州控件) 通过选择一些
我认为这可能是响应式(Reactive)表单的一个错误。如果有经验丰富的 Angular 专家提供帮助,我将不胜感激。 症状:无法在给定时间输入超过 1 个字符。 出现情况:当输入是 FormArra
如何解决下面提到的错误: Type 'FormArray' is not assignable to type 'any[]'. Property 'includes' is missing in t
我有一个表单,其中一个控件是 formGroups 的 formArray。我将自定义验证器设置为 formGroups 中的一些控件。验证器工作正常,如果我在某些控件无效时检查 formArray
我想在表单中添加自定义验证器,以防止 mat-step 切换到下一步。当我使用 FormGroups 时一切正常,但当我必须使用 FormArray 时无法实现验证。 我已经尝试了至少两种在表单初始化
我想要多条错误消息,但不知道该怎么做......?在这里,我需要分别验证每个步骤,这就是我使用此步进器的原因 Em
我已经实现了一个 stackblitz,您可以在其中使用一些配置创建一个动态表单。一切正常,直到您使用 FormArray .什么想法?基本上,您的配置文件中可以有许多不同类型的字段。例如 check
我想用 FormArray 创建一个可编辑的表格。 为此,我有 results在表中呈现的属性。 用 FormArray 数据初始化它的正确方法是什么? results: Array; tableFo
我有一个动态大小的项目。对于每个我想生成一个复选框的项目。 我认为最好的方法是使用 FormArray。 但是我无法设置任何其他属性来指定动态复选框的标签。 items: Array = ['Bana
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
这是我的表单组: this.productGroup = this.fb.group({ name: ['', Validators.compose([Validators.required, V
我在 Angular 6 中使用了响应式(Reactive)形式。这种响应式(Reactive)形式包含一个名为 instruments 的 FormGroup,它是一个 FormArray。 我收到
我的 Angular 5/Angular Material 应用程序中有这个 FormArray: this.form = new FormGroup({ customerNumberC
我有一个 PhoneNumbersFormComponent 其模板如下所示: 我想通过 angular-cli 的 ng g component
我用 angular2 和 typescript 构建了一个表单。我尝试动态添加复选框列表,但它对我不起作用,我的错误在哪里? 模板代码:
我有在 FormBuilder 的帮助下构建的 Angular 表单。 Form 包含一个 FormArray,它具有用户想要的任意多的字段。我已经为字段设置了验证器 this.fb.array([t
我创建了一个自定义验证器来验证我的 FormArray 中的唯一性。当特定的值已经在数组中时,我想显示错误。 问题是它没有按预期工作。 实际行为: 重现步骤: 添加 3 个“输入”- 地址; 填写输入
我是一名优秀的程序员,十分优秀!