嗨,当有人从下拉列表中选择新的行号时,我正在尝试重新排列表格的行。 以下是代码
this.numbers=[
{value: 1, numval:1},
{value: 2, numval:2},
{value: 3, numval:3},
{value: 4, numval:4},
{value: 5, numval:5},
{value: 6, numval:6},
]
<tr *ngFor="let sub of mainlist | let j=index">
<td>{{sub.name}}</td>
<td>
<select [(ngModel)]="sub.order" (change)="rearrange(sub.order, mainlist,j) >
<option *ngFor="let number of numbers" [value]=number.value">{{number.numval}} </options>
</select>
</td>
</tr>
当某人想要更改行的顺序时,他们从下拉列表中选择新的数字,从而调用组件中的重新排列功能
rearrange(neworder, mainlist, fromindex)
for(var i=fromIndex+1; i<=mainlist.length-1; i++) {
if(neworder > fromIndex){
mainlist[i].order=i;
} else {
mainlist[i].order=i+1;
}
}
如果我选择当前数字低于新选择的数字,并且上面的代码可以更改,则上面的代码可以正常工作,但是当当前数字高于选择的数字时,它将创建相同数字的副本,即当前数字为2并想要更改它到4会同时创建4。 请让我知道如何解决此问题,因此当我从订单下拉列表中选择新号码时,它会自动重新配置。例如,在下拉列表中当前数字为2时,我选择4而不是1保持不变,3变为2,4变为3,2变为4,5和6不变。 谢谢