перетащите angular порядок не меняется - PullRequest
0 голосов
/ 13 апреля 2020

я создаю построитель форм на основе этого https://stackblitz.com/edit/angular-dynamic-survey-creation-golkhg, и я использую эту функцию для отброшенного

onDrop(event: CdkDragDrop<string[]>) {
    moveItemInArray(this.surveyForm.get('surveyQuestions')['controls'], event.previousIndex, event.currentIndex);
}

questionTitle должно измениться, но это не было

enter image description here

но в html меняется

enter image description here

порядок массив меняется в html, но в моем json не меняется, может кто-нибудь мне помочь?

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Вам необходимо добавить свойство display_order в вашу группу formGroup, и вы сможете увидеть изменение порядка в этом свойстве.

А в методе onDrop измените порядок отображения других вопросов. как то так:

onDrop(event: CdkDragDrop<string[]>) {
   moveItemInArray(this.surveyForm.get('surveyQuestions')['controls'], event.previousIndex, event.currentIndex);
   this.questionFormArray.controls[event.currentIndex]['controls']['display_priority']
            .setValue(event.currentIndex + 1);
   this.questionFormArray.controls.forEach((category, index) => {
            (category as FormGroup).controls['display_priority'].setValue(index + 1);
   });
}
0 голосов
/ 13 апреля 2020

попробуйте добавить changeDetectionStrategy к вашему компоненту

https://angular.io/api/core/ChangeDetectionStrategy

...