我一直在尝试将以下对象绑定到我的表单,但无济于事...我的代码如下:
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)(或任何其他密钥)中读取数据。我还尝试了地址。我的怀疑是在补丁调用中,我认为我无法正确设置表单控制。P. S.来自DB的用户数据是正确的,因此问题特别存在于"绑定"部分。
编辑:另外,如果我在PatchValue()之后立即进行断点,则用户形式地址似乎是填充(来自DEBUGGER):
this.userForm.get('Addresses').value
UK:
Code: 123
EXT: a123
.
.
.
我对DB Getuser()的响应是:
"Addresses": {
"CountryCode": {
"Code": 123,
"Ext": "a123",
.
.
.
},
预先感谢
您必须在formgroup中定义您的控件名称,例如地址和相同的控件。
<input type="text" class="form-control" formControlName="Addresses">
您必须以这种方式在这里进行修补乡村代码值
this.userForm.patchValue({
'Addresses': this.user.Addresses['UK'].Code
});