使用Angular2 +根据新选择的编号动态重新排列行

时间:2019-04-07 11:24:00

标签: javascript html angular typescript

嗨,当有人从下拉列表中选择新的行号时,我正在尝试重新排列表格的行。 以下是代码

 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不变。 谢谢

0 个答案:

没有答案