我一直在尝试将以下对象绑定到我的表单,但无济于事......我的代码如下:
export class User {
public Name: string;
public Surname: string;
public Addresses: Map<string, Array<Location>>;
.
.
.
}
请注意地址,其中键是国家/地区,值是位置对象数组...
现在在我的组件中我有如下内容,在从数据库加载数据后,调用更新表单执行:
this.userForm= this.fb.group({
Name: ['', Validators.required],
Surname: ['', Validators.required],
Addresses: [{}],
.
.
.
});
UpdateForm:
updateForm() {
this.userForm.patchValue({
Name: this.user.Name,
Surname: this.user.Surname,
Addresses: this.user.Addresses
});
最后我的html:
<form [formGroup]="userForm" (ngSubmit)="submit()" novalidate>
<div class="panel-body" >
<div class="col-lg-4">
<label>Code:</label>
<div class="form-group input-group">
<input type="text" class="form-control" formControlName="Addresses['UK'].Code">
</div>
</div>
.
.
.
我的问题是我无法读取指定索引(UK)(或任何其他键)的数据。我也尝试过Addresses.get('UK')...和Addresses.value ['UK'] .....但没有成功......还尝试使用ngModel,但又失败了。我的怀疑在于补丁调用,我认为我没有正确设置表单控件。 P. S.来自db的用户数据是正确的,因此问题特别在于“绑定”部分。
编辑: 另外,如果我在patchValue()之后立即执行断点,则userForm地址似乎填充 (来自调试器) :
this.userForm.get('Addresses').value
UK:
Code: 123
EXT: a123
.
.
.
我对db GetUser()的回复是:
"Addresses": {
"CountryCode": {
"Code": 123,
"Ext": "a123",
.
.
.
},
提前致谢
答案 0 :(得分:0)
您必须在formGroup中定义控件名称,例如地址和您必须提供的相同控件,就像我在下面所做的那样构建元素
<input type="text" class="form-control" formControlName="Addresses">
您必须以明确的方式在此处修补国家/地区代码值
this.userForm.patchValue({
'Addresses': this.user.Addresses['UK'].Code
});