绑定映射<字符串、数组<Object>>以形成



我一直在尝试将以下对象绑定到我的表单,但无济于事...我的代码如下:

    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
    });

最新更新