Angular 使用ng模型格式的json数据形成值
我的html中有一个表单元素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"
<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": ""
}
}