【发布时间】: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来存储他们的选择。使用该单个变量,您可以确定渲染循环中的所有其他信息。 -
由于您将选项
id、right和wrong设置为组件并在每个问题中引用它,您可以重构此逻辑以生成包含数据的对象每个问题单独并在您的模板中引用该问题或为问题制作一个子组件并将当前用作“quiz-master-component” -
嘿@Chris,你能在 stackblitz 上展示吗,我还没有动手操作 Angular。我还在学习
-
@Agree 如果您可以在 stackblitz 中详细说明,请...?
标签: javascript angular click dom-events angular-directive