Попробуйте ввести код
$(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');
});
});
Ваше 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