2

我有一个可变长度的表格,在每个单元格中我都有一个输入(每个输入的默认值为 0),我需要用户编辑他想要的数据,然后当他按下按钮时,我需要拥有所有返回的数据和输入的 id(id 总是不同的),即使是那些还没有被编辑过的,我将附上代码以便更好地理解:

<form  #login (ngSubmit)="onSubmit(login.value)" novalidate>
    <table class="rtable">
        <tr>
            <th></th>
            <th *ngFor="let column of mesi">
                {{column}}
            </th>
        </tr>

        <tr *ngFor="let row of FigProfs">
            {{row.nome}}
            <td *ngFor="let column of mesi">
                <input  id="gd{{row.id}}_{{column}}" type="number"  value=0 >
            </td>
            
        </tr>
    </table>
    <button class="btnsubmit" type="submit">AVANTI</button>
</form>

因此,您可以看到输入总是不同的,因为是使用根据 ngfor 的值而变化的值生成的,所以我的问题是:有没有一种简单的方法可以在我的 ts 文件中包含所有这些值的数组?

4

2 回答 2

0

直接的解决方案,绑定ngModel到一个对象:

<input  id="gd{{row.id}}_{{column}}" type="number"  value=0 [ngModel]="get(row.id,column)" (ngModelChange)="set(row.id,column,$event)">

你的班:

data: any = {};

get(i, j) {
  return this.data[i] && this.data[i][j];
}

set(i, j, v) {
  this.data[i] = this.data[i] || {};
  this.data[i][j] = v;
}

随意正确设置类型。

Stackblitz 演示

于 2021-08-06T08:45:00.530 回答
0

ng-Model与直接绑定到嵌套数组元素一起使用。

模板

    <tr *ngFor="let row of FigProfs;  let i = index">
        {{row.nome}}
        <td *ngFor="let column of mesi; let j = index">
            <input  id="gd{{row.id}}_{{column}}" type="number"  [(ngModel)]="inputValues(i, j)" >
        </td>
        
    </tr>

TS

let inputValues = new Array(this.FigProfs.length).fill(new Array(this.mesi.length).fill(0));
于 2021-08-06T09:24:43.587 回答