簡體   English   中英

拖放 angular 順序不變

[英]drag and drop angular order not changing

我基於此https://stackblitz.com/edit/angular-dynamic-survey-creation-golkhg創建表單構建器,我使用此 function 進行丟棄

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

questionTitle必須改變,但事實並非如此

在此處輸入圖像描述

但在 html 中它正在改變

在此處輸入圖像描述

數組的順序在 html 中發生了變化,但在我的 json 中沒有變化,有人可以幫我嗎?

編輯

過了一會兒我不再碰這個代碼,我發現了一些錯誤,請看之前和之后的圖像,這里是之前

前

"quizQuestions": [
    {
      "questionType": "File Upload",
      "display_order": 1,
      "questionGroup": {
        "questionTitle": "",
        "quizAnswer": ""
      }
    },
    {
      "questionType": "Tanggal",
      "display_order": 2,
      "questionGroup": {
        "questionTitle": "",
        "quizAnswer": ""
      }
    }
  ],

在我拖動第一個表單后,它看起來像這樣

后

"quizQuestions": [
    {
      "questionType": "Tanggal",
      "display_order": 2,
      "questionGroup": {
        "questionTitle": "",
        "quizAnswer": ""
      }
    },
    {
      "questionType": "File Upload",
      "display_order": 1,
      "questionGroup": {
        "questionTitle": "",
        "quizAnswer": ""
      }
    }
  ],

實際上有什么問題? 我已經嘗試了你們提供的兩種最佳解決方案,但仍然是這樣,請幫幫我。 注意:我將 surverysQuestions 更改為 quizQuestions

您需要在 formGroup 中添加 display_order 屬性,您可以在該屬性中看到順序更改。

並在 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);
   });
}

嘗試將 changeDetectionStrategy 添加到您的組件

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

方法示例:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM