Перемешивать объекты в FormArray - PullRequest
1 голос
/ 09 января 2020

Я работаю над симулятором экзамена. Я создал экзамен с несколькими вариантами ответов и хотел бы каждый раз перетасовывать возможные ответы, но не могу найти ответ ..

Код, который у меня есть:

TS

loadForm(data) {
  this.maxindex = data.length;
  this.status = 1
  for (let ques = 0; ques < data.length; ques++) {
    const questionsFormArray = this.examForm.get("questions") as FormArray;
    questionsFormArray.push(this.question);
    for (let opt = 0; opt < data[ques].options.length; opt++) {
      const optionsFormsArray = questionsFormArray.at(ques).get("options") as FormArray;
      optionsFormsArray.push(this.option);
    }
  }
  this.examForm.controls.questions.patchValue(data);
}

HTML

<div formArrayName="questions">
 <div *ngFor="let question of examForm.get('questions').controls;let questionIndex=index"
   [formGroupName]="questionIndex">
   <div *ngIf="questionIndex==index">
    <label>{{questionIndex+1}}) {{examForm.value.questions[questionIndex].description}} </label>
     <br />
      <div formArrayName="options">
       <div *ngFor="let option of question.get('options').controls; let optionIndex=index"
         [formGroupName]="optionIndex">
         <input type="checkbox" formControlName="selected" value=""(change)="checkValue(questionIndex. 
            optionIndex)"/>
         {{examForm.value.questions[questionIndex].options[optionIndex].response}}
       </div>
     </div>
   </div>
  </div>
 </div>

Это параметры FormsArray, которые я хотел бы перетасовать каждый раз, кто-нибудь может помочь?

1 Ответ

0 голосов
/ 09 января 2020

Вы можете перетасовать массив следующим образом.

optionsFormsArray.sort( () => Math.random() - 0.5) );

...