Как привязать formControlName к статическому значению переключателя

Попробуйте ввести код

$(function () {
   var answers = $('.answer');
    $('.faq .ask').on('click', function(){
        var currentAnswer = $(this).next('div.answer');
        answers.not(currentAnswer).slideUp(500);
        answers.not(currentAnswer).removeClass('active');
        currentAnswer.stop(true).slideToggle(500);
        currentAnswer.toggleClass('active');
    });
});
0
задан vinuta 19 January 2019 в 08:20
поделиться

1 ответ

Ваше formControlName находится внутри ngfor. Это одно и то же имя для каждого индекса. Вот почему значение изменяется в каждом индексе. Вам нужно создать FormArray.

 ngOnInit() {
         this.ipdForm = this.fb.group({
          IpdData: this.fb.array([]) 
       })
     }

     get ipdFormArray() {
       return this.ipdForm.get('IpdData') as FormArray;
    }

         filterDefaultValues() {
       for (let i = 0; i < this.IpdData.length; i++) {
            const datas =  this.fb.group({
                 ratingForm: [''],
                 question: [IpdData[i].question],
                 });
      this.ipdFormArray.push(datas);
        }         
       }

измените свой HTML, как показано ниже; ngfor для массива реактивной формы и добавьте имя formarray

     <form class="custom-form" [formGroup]="ipdForm" 
    (submit)="ipdFeedback();">
    <div formArrayName="IpdData">
    <div class="form-group" *ngFor="let d of ipdFormArray.controls;let i = index" [formGroupName]="i">
    <label for="dob" class="control-label">
    {{d.question }}
    <sup class="custom-required">*</sup>
  </label>
    <label class="radio-inline custom-radio">
    <div *ngIf="IpdData[i].options == 'radio'">
        <div >
           <label class="radio-inline custom-radio">
            <input class="radio-text" formControlName="ratingForm" type="radio"  value="Poor" />
            <span class="radio-text">Poor</span>
          </label>
    <label class="radio-inline custom-radio">
            <input class="radio-text" formControlName="ratingForm" type="radio"  value="Fair"   />
            <span class="radio-text">Fair</span>
          </label>
    <label class="radio-inline custom-radio">
            <input class="radio-text" formControlName="ratingForm" type="radio"   value="Good"  />
            <span class="radio-text">Good </span>
          </label>
  </div>
  </div>
  <div *ngIf="IpdData[i].options == 'text'">
    <textarea placeholder="Comments" formControlName="ratingForm" type="text" class="form-control" tabindex="14"></textarea>
  </div>
  </label>
  </div>
  <button type="submit"></button>

Вы получите значения в this.ipdFormArray.value

0
ответ дан Dharan 19 January 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: