ng2 dragula устанавливает новое значение индекса после изменения порядка

Я использую пакет ng2-dragula для функций перетаскивания, но после изменения порядка элементов списка не могу получить обновленный индекс массива. Вот код, который я пытаюсь.

HTML

      <ul [dragula]='"bag-items"' ([dragulaModel])="contactArray">
                  <li *ngFor="let field of contactArray" >
                    <label>{{field.role}}</label>
                 </li>
      </ul>

JS

import { DragulaService   } from "ng2-dragula";

@Component({
  selector: 'app-edit-project',
  templateUrl: './edit-project.component.html',
  styleUrls: ['./edit-project.component.css'],
  providers: [    
      DragulaService
  ]
})

export class ProjectComponent implements OnInit {

constructor(private dragula:DragulaService) {
    for(let i =0; i<=this.contactArray.length; i++) {
        console.log(this.contactArray[i].index)
   }
}

}

когда я пытаюсь утешить this.contactArray[i].index после переупорядочения списка. Не работает правильно.

Default order looks like this


A
B
C
D  

{ Value :   A, index: 1 } 
{ Value :   B, index: 2 } 
{ Value :   C, index: 3 } 
{ Value :   D, index: 4 } 

После того, как я переупорядочу, необходимо обновить новый индекс, как показано ниже, для обновления API,

D
B
C
A 

{ Value :   D, index: 1 } 
{ Value :   B, index: 2 } 
{ Value :   C, index: 3 } 
{ Value :   A, index: 4 } 

this.http.post(API_URL+'product/update', BodywithcontactArray);

Любые экспертные советы, пожалуйста.


person klmuralimohan    schedule 23.01.2019    source источник
comment
Я думаю, что ng2-Dragula просто меняет положение объекта в массиве. используя Dragula, вы не можете изменить значение объекта, если вы хотите сделать это, вам нужно изменить каждый индекс вручную.   -  person Sneha Pawar    schedule 23.01.2019
comment
@SnehaPawar это неправда. ng2-Dragula изменяет порядок в массиве, но у вас много действий Drake, поэтому вы можете изменить значение после перемещения элемента из одного места в другое. Некоторые из действий дракона дают вам возможность получить идентификатор элемента, другие дают вам ссылки на весь массив, где вы должны найти объект, но, как правило, у вас есть много возможностей для манипулирования данными в массиве.   -  person kris_IV    schedule 27.01.2019


Ответы (1)


Вы можете получить соответствующее значение объекта

this.dragula.drop.subscribe(value => {
      // here you have to do swap index manually
console.log(value[0]);

console.log(value[1]);

console.log(value[2]);

console.log(value[3]);
});
person Sneha Pawar    schedule 23.01.2019