событие отбрасывания не передается правильно на Edge - PullRequest
0 голосов
/ 31 октября 2018

У меня есть веб-страница с перетаскиваемой таблицей, в которой вы можете перетаскивать элементы, чтобы перемещать их по порядку.

В Chrome и Firefox это работает безупречно, но по некоторым причинам я не могу заставить его работать в Edge.

Когда я отлаживаю в Edge, все свойства объекта события, которые передаются, являются ошибками.

Вот мой код:

машинопись

dragEnd(event) {
event.target.style.opacity = '1';
}

drag(event, questionId: number) {
event.dataTransfer.setData('questionId', questionId);
const element: HTMLTableRowElement = event.target;
element.style.opacity = '0.4';
}

allowDrop(ev) {
ev.dataTransfer.dropEffect = 'move';
ev.preventDefault();
}

drop(event, themeId: number) {
const target = event.target.parentElement;
this.moveRow(Number(event.dataTransfer.getData('questionId')), this.stripCharacters(target.id));
this.updateSaveOrderButton(themeId);
}

 moveRow(source: number, target: number) {
let questions: Question[] = this.evaluation.themes.find
  (t => t.id === this.getQuestionById(source).theme_id).questions;

const sourceIndex: number = questions.findIndex(q => q.evaluation_question_id === source);
const targetIndex: number = questions.findIndex(q => q.evaluation_question_id === target);

if (questions.find(q => q.evaluation_question_id === target) && sourceIndex !== targetIndex)
  questions = this.arrayMove(questions, sourceIndex, targetIndex);

}}

HTML

 <tr [id]="'questionrow' + question.evaluation_question_id" *ngFor="let question of theme.questions; let index = index"
                class="draggable" draggable="true" (dragend)="dragEnd($event)" (drop)="drop($event, theme.id)"
                (dragstart)="drag($event, question.evaluation_question_id)" (dragover)="allowDrop($event)">

1 Ответ

0 голосов
/ 07 ноября 2018

Я нашел ответ.

Видимо, Edge немного строже, когда речь заходит о типах, чем другие браузеры. Методы перетаскивания должны иметь свои параметры событий с типом DragEvent.

...