Angular 使用ng模型格式的json数据形成值

Angular 使用ng模型格式的json数据形成值,angular,angular2-forms,angular2-services,Angular,Angular2 Forms,Angular2 Services,我的html中有一个表单元素 <form [formGroup]="myForm" (ngSubmit)="searchIncident()"> <select class="form-control" id="category" (change)="getSubCategories($event.target.value)" (ngModel)="categoryMast.catCode"

我的html中有一个表单元素

 <form [formGroup]="myForm" (ngSubmit)="searchIncident()">
    <select  class="form-control"
            id="category"
            (change)="getSubCategories($event.target.value)"
            (ngModel)="categoryMast.catCode"
            formControlName="catCode">
            <option value="select" selected disabled>--Select--</option>
            <option *ngFor="let category of categoryMaster" value="{{category.catCode}}">{{category.catDesc}}</option>
    </select> 
 </form>
这里提交的json是(this.myForm.value)

但我需要它在ng模型中定义的方式

 "categoryMast": {
    "catCode": 12
  }
尝试过的解决方案:


一个解决方案是,我需要修改json,以便添加CategoryMaster数组,但这会变得很麻烦,因为会有更多类似这样的字段。

我可能会像构建模型一样构建表单,因此最终得到与您想要的完全相同的表单值。根据您的模型,这将是相当复杂的,如果对模型进行更改,可能很难维护。(另一个可行的选择是在将表单中的值发送到api之前将其转换为模型,如注释中所建议的)

由于您使用的是表单,因此可以废弃所有的
ngModel
,这就是您可以使用表单控件的目的:)

因此,使用当前设置,您的表单如下所示:

this.myForm = this.fb.group({
  categoryMast: this.fb.group({
    catCode: ['']
  })
});
以及您的html:

<form [formGroup]="myForm">
<label>Category: </label>
<div formGroupName="categoryMast">
  <select formControlName="catCode">
    <option value="select" selected disabled>--Select--</option>
    <option *ngFor="let category of categoryMaster" value="{{category.catCode}}">{{category.catDesc}}</option>
  </select>
</div>
</form>

我可能真的会像构建模型一样构建表单,所以最终得到的表单值与您想要的完全一样。根据您的模型,这将是相当复杂的,如果对模型进行更改,可能很难维护。(另一个可行的选择是在将表单中的值发送到api之前将其转换为模型,如注释中所建议的)

由于您使用的是表单,因此可以废弃所有的
ngModel
,这就是您可以使用表单控件的目的:)

因此,使用当前设置,您的表单如下所示:

this.myForm = this.fb.group({
  categoryMast: this.fb.group({
    catCode: ['']
  })
});
以及您的html:

<form [formGroup]="myForm">
<label>Category: </label>
<div formGroupName="categoryMast">
  <select formControlName="catCode">
    <option value="select" selected disabled>--Select--</option>
    <option *ngFor="let category of categoryMaster" value="{{category.catCode}}">{{category.catDesc}}</option>
  </select>
</div>
</form>

然后,您必须在http post调用之前从post数据创建自定义json。这就是我在尝试过的解决方案中提到的。您正在传递
this.myForm.value
,您是否尝试过
this.categoryMaster
?需要传递表单中的其他值,这里我截断了表单,然后您需要什么?它应该是什么?然后你必须在http post调用之前从post的数据创建自定义json。这就是我在尝试过的解决方案中提到的。你正在传递
this.myForm.value
,你是否尝试过
this.categoryMaster
?需要传递表单中的其他值,这里我已经截断了表单,那么你需要什么?应该是什么?
{
  "categoryMast": {
    "catCode": ""
  }
}