нажатие одной простой переключающей кнопки в массиве форм влияет на все переключатели в angular 11

#angular #typescript #primeng

#angular #typescript #primeng

Вопрос:

Поведение

проверка на одной переключателе в группе FormArray проверяет все остальные переключатели в других группах. Поскольку это массив форм, все значения formControlName для переключателей одинаковы.

Ожидаемое поведение При выборе переключателя в одной группе в массиве форм это не должно влиять на переключатели в другой группе.

Минимальное воспроизведение проблемы

https://stackblitz.com/edit/primeng-radio-form-array-selection-issue-rmeptx?file=src/app/app.component.html

Комментарии:

1. Ваш код stackblitz не работает, он выдает некоторые ошибки.

2. исправлена проблема. теперь он работает нормально @VimalPatel

3. Привет, @SaadKhan, у меня такая же проблема, как вы решили проблему?

4. @Alba проблема связана с совместимостью angular 11 с ng prime. Вместо этого я использовал Mat-переключатель, чтобы решить мою проблему

Ответ №1:

Эта проблема связана с переключателями в массиве форм, имеющими одинаковое значение. Я нашел (уродливый) обходной путь, который использует ngModel и событие onClick. Также обратите внимание на ngModelOptions, который требуется для использования ngModel внутри FormGroup

 public userAgree: boolean = null;

updateUserAgreeFormControl() {
  if (this.reportCommentFormGroup)  
    this.reportCommentFormGroup.get('userAgree').setValue(this.userAgree);
} 
 <span class="radio-button">
    <p-radioButton name="userAgree" label="Agree" [value]="true" [(ngModel)]="userAgree"      
      [ngModelOptions]="{standalone: true}" (onClick)="updateUserAgreeFormControl()"></p-radioButton>
</span>