【问题标题】:How can I highlight a mat-radio-button row?如何突出显示垫单选按钮行?
【发布时间】:2020-08-24 08:44:53
【问题描述】:

编辑:https://stackblitz.com/edit/angular-uhuwie

我很难突出显示垫子单选按钮的特定行。选择正确的选项后,它似乎突出显示了所有行。如果所选行与正确答案匹配,则只有该行应突出显示为绿色,否则突出显示为红色。我还需要每页显示一个问题,并在显示答案时将解释移至问题所在的位置。我的代码如下:

<div *ngFor="let option of question.options">
  <div class="form-group">
    <mat-radio-group class="form-control" formControlName="answer" name="answer" (change)="radioChange($event)">
      <div [style.backgroundColor]="selectedRadioOption === question.correctAnswer ? '#00c853': 'ff0000'">
        <mat-radio-button color="primary" name="radio-group" [value]="option.optionValue" (click)="validate(answer)">
          <label>{{ option.optionText }}</label>
        </mat-radio-button>
      </div>
    </mat-radio-group>
  </div>
</div>

【问题讨论】:

标签: angular angular-material


【解决方案1】:

您还需要检查该选项是否与所选选项相同。

<div *ngFor="let option of question.options">
  <div class="form-group">
    <mat-radio-group class="form-control" formControlName="answer" name="answer" (change)="radioChange($event)">
      <div 
        [style.backgroundColor]=
            "selectedRadioOption === question.correctAnswer &&
             selectedRadioOption === option.optionValue
             ? '#00c853': 'ff0000'">
        <mat-radio-button color="primary" name="radio-group" [value]="option.optionValue" (click)="validate(answer)">
          <label>{{ option.optionText }}</label>
        </mat-radio-button>
      </div>
    </mat-radio-group>
  </div>
</div>

【讨论】:

  • 虽然我不确定为什么当页面上有多个问题时selectedRadioOption 是一个字符串。
  • 谢谢,但如果答案不正确,它似乎仍然不会突出显示红色,正确答案上只会突出显示绿色。是的,我还没弄清楚怎么做,所以一个问题在页面上。
  • @multiv123 我建议分离这个逻辑,如果可能的话把它拉到 ts 文件中。例如,您可以为 css 目的设置一个类。一种用于is-selected,一种用于is-correct
  • 如何将问题分开到不同的页面上?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
相关资源
最近更新 更多