【问题标题】:Angular - unable to maintain active classAngular - 无法维持活动课程
【发布时间】:2020-06-23 11:07:30
【问题描述】:

在这个应用程序中,在每个问题中,我都有 4 个陈述,在这些陈述中,正确或错误都可以是正确答案,这很好。但是,当我单击下一条语句时,它会从先前选择的元素中删除该类。我想从任何语句中选择真或假,当我单击下一个语句的按钮时,它应该保持其活动状态。我有什么办法可以处理?我正在使用 ID,所以我想不出任何解决方法。请任何帮助或建议..

工作 Stackblitz 演示: https://stackblitz.com/edit/angular-ivy-4yczgp

<div class="statement-row"
                               *ngFor="let item of qblock.options;let j = index"
                               [class.correct-answer]="item.id == id && right"
                               [class.wrong-answer]="item.id == id && wrong"
                               >
                               <!-- [ngClass]="{'wrong-answer': item.selectedIndex === j,'correct-answer':item.customIndex === j}" -->
                            <div class="statement-question">
                              <div class="qitem-text">
                                <div class="qitem-textbox">
                                  <p>{{item.statement}}</p>
                                </div>
                              </div>
                              <div class="ccq">
                                <div class="qitem" [class.green-class-right]="highlight_false_green && item.id == id" [class.red-class-wrong]="highlight_false_red  && item.id == id"
                                        (click)="clickFalse(item)">
                                  <i class="qitembox qclose-icon"></i>
                                </div>
                                <div class="qitem" [class.green-class-right]="highlight_true_green  && item.id == id" [class.red-class-wrong]="highlight_true_red  && item.id == id"
                                (click)="clickTrue(item)">

                                  <i class="qitembox qtick-icon"></i>
                                </div>
                              </div>
                            </div>
                            <div class="correct-statement">
                              <span class="true-statement">This statment is True</span>
                              <span class="false-statement">This statment is False</span>
                              <em class="wrong-answer-description">
                                {{item.explanation}}
                              </em>
                              <em class="correct-answer-description">
                                {{item.explanation}}
                              </em>
                            </div>

                          </div>

【问题讨论】:

  • 您需要一个谨慎的highlight_true_red 状态变量为每个项目,而不仅仅是整个应用程序的一个。您还应该重构您的应用程序,以便每个应用程序都有一个状态变量,如果用户没有选择任何内容,我将使用undefined,并使用false/true 来存储他们的选择。使用该单个变量,您可以确定渲染循环中的所有其他信息。
  • 由于您将选项 idrightwrong 设置为组件并在每个问题中引用它,您可以重构此逻辑以生成包含数据的对象每个问题单独并在您的模板中引用该问题或为问题制作一个子组件并将当前用作“quiz-master-component”
  • 嘿@Chris,你能在 stackblitz 上展示吗,我还没有动手操作 Angular。我还在学习
  • @Agree 如果您可以在 stackblitz 中详细说明,请...?

标签: javascript angular click dom-events angular-directive


【解决方案1】:

我重新设计了组件,所以我认为它可以按您的意愿工作。你可以在这里找到代码:https://stackblitz.com/edit/angular-ivy-pctp7z

如果您还有其他问题,请随时提出。描述所有代码更改有点困难。希望对你有帮助!

【讨论】:

  • 它有效,但如果您能提供帮助,还有另一个与此相关的问题
  • 还有什么问题? :)
  • 我更新了我的Demo,添加了两个不同类型的问题。尝试了您的解决方案,但没有奏效。这些不是 t/f 而是 MCQ 类型。出现同样的问题,有什么帮助吗?
  • 我更新了我的,猜猜这就是你要找的 ;)
  • 你能帮我解决另一个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多