我发现将输入字段名称绑定到整数值不是一个好习惯,但是我不知道我还能怎么做。
我必须生成动态输入字段才能提交用户的医学检验结果。为了将这些输入与测试ID相关联,我将输入的键作为测试表的ID。
我当前的数据库设计
测试数据
| id | test_id | test_data |
|----|---------|-----------|
| 1 | 1 | aaa |
| 2 | 1 | bbb |
测试结果
| id | client_test_id | test_data_id | result |
|----|----------------|--------------|--------|
| 1 | 1 | 1 | 120 |
| 2 | 1 | 2 | 230 |
我目前如何生成输入字段以提交测试结果
在组件中
getTestData(testDatas: any) {
this.clientTestDataNew = [];
testDatas.forEach(testData => {
let testDataItem = new TextTestDataItem({
key: testData.id,
label: testData.name,
type: 'text',
value: '',
required: true,
order: 1
});
this.clientTestDataNew.push(testDataItem);
});
}
在模板中
<form *ngIf="clientTestDataNew?.length > 0" (ngSubmit)="onSubmit()" [formGroup]="form">
<div *ngFor="let clientTestDataItem of clientTestDataNew" class="form-row">
<div [formGroup]="form">
<label [attr.for]="clientTestDataItem.key">{{clientTestDataItem.label}}</label>
<div [ngSwitch]="clientTestDataItem.controlType">
<input *ngSwitchCase="'textbox'" [formControlName]="clientTestDataItem.key"
[id]="clientTestDataItem.key" [type]="clientTestDataItem.type">
<select [id]="clientTestDataItem.key" *ngSwitchCase="'dropdown'"
[formControlName]="clientTestDataItem.key">
<option *ngFor="let opt of clientTestDataItem.options" [value]="opt.key">{{opt.value}}</option>
</select>
</div>
<div class="errorMessage" *ngIf="!isValid">{{clientTestDataItem.label}} is required</div>
</div>
</div>
</form>