2017-09-02 35 views
0

我一直试图以下对象绑定到我的形式,但都无济于事......我的代码如下:绑定地图<字符串数组<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),(或者任何其它键)的数据。我也试过用Addresses.get(“UK”)...和Addresses.value [“英国”] .....但没有成功......还试图用ngModel,但再次失败。我的怀疑在于补丁调用,我认为我没有正确设置窗体控件。 从分贝P. S.用户数据是正确的,所以问题在“结合”具体部分所在。

编辑: 此外,如果我右后patchValue()用户窗体地址似乎被填充做一个破发点(从调试器)

this.userForm.get('Addresses').value 

    UK: 
     Code: 123 
     EXT: a123 
     . 
     . 
     . 

从数据库的getUser我的回应( )为:预先

"Addresses": { 
     "CountryCode": { 
      "Code": 123, 
      "Ext": "a123", 
      . 
      . 
      . 

     }, 

由于

+0

地址[“UK”。代码这是不是你的formControl因此你不会得到任何价值,你可以分享你的地址响应。然后我们需要动态地为它们创建formControls。 –

+0

@RohanFating我已经编辑在原来的职位以获得更多信息。谢谢 – HCL02

回答

0

你必须定义里面formGroup您的控制名称,如地址和相同的控制,你必须提供给你的表单元素,像我一样下面

<input type="text" class="form-control" formControlName="Addresses"> 

你必须这样明确

this.userForm.patchValue({ 
     'Addresses': this.user.Addresses['UK'].Code 
    }); 
这里打补丁的国家代码值
相关问题