html - 在测试应用程序中提交多个答案后,角度计算正确答案并显示在结果中
问题描述
用户使用单选按钮提交多个答案选择后。如何实现结果功能,包括correctAns/totalQuestions
合格或不合格的数量?例如,
HTML:
<div>
<h2>Angular Exam using Model Driven Form</h2>
<form [formGroup]="myForm" (ngSubmit)="getSelectedValues()">
<div *ngFor="let q of allQuestions; let i = index">
<p>{{i + 1}}. {{q.question}}</p>
<input type="radio" #btn1 formControlName={{q.question}} value={{q.ans1}}>
<span id="{{q.ans1}}" [ngClass]="{'highlight': selectedAnswers[i] && q.correctAns === q.ans1, 'incorrect':btn1.checked && selectedAnswers[i] && q.correctAns !== q.ans1 }">{{q.ans1}}</span> <br>
<input type="radio" #btn2 formControlName={{q.question}} value={{q.ans2}}>
<span id="{{q.ans2}}" [ngClass]="{'highlight': selectedAnswers[i] && q.correctAns === q.ans2, 'incorrect':btn2.checked && selectedAnswers[i] && q.correctAns !== q.ans2 }">{{q.ans2}}</span> <br>
<input type="radio" #btn3 formControlName={{q.question}} value={{q.ans3}}>
<span id="{{q.ans3}}" [ngClass]="{'highlight': selectedAnswers[i] && q.correctAns === q.ans3, 'incorrect':btn3.checked && selectedAnswers[i] && q.correctAns !== q.ans3 }">{{q.ans3}}</span> <br>
<input type="radio" #btn4 formControlName={{q.question}} value={{q.ans4}}>
<span id="{{q.ans4}}" [ngClass]="{'highlight': selectedAnswers[i] && q.correctAns === q.ans4, 'incorrect':btn4.checked && selectedAnswers[i] && q.correctAns !== q.ans4 }">{{q.ans4}}</span> <br>
</div><br/>
<input type="submit" value="Submit" [disabled]="myForm.invalid">
</form>
</div>
打字稿:
selectedAnswers:Array<string>=[];
getSelectedValues(){
this.allQuestions.forEach(()=>{
this.selectedAnswers = (<any>Object).values(this.myForm.value);
})
console.log(this.selectedAnswers);
for (var i = 0; i < this.selectedAnswers.length; i++) {
if(this.selectedAnswers[i] == this.allQuestions[i].correctAns)
}
}
}
解决方案
你需要选择正确的答案,所以你的getSelectedValues
方法是这样的:
for (var i = 0; i < this.selectedAnswers.length; i++) {
if(this.selectedAnswers[i] == this.allQuestions[i].correctAns)
this.correctAnswers.push(this.selectedAnswers[i]);
}
在您的模板中:
<p *ngIf="correctAnswers"> Result: {{correctAnswers.length}} / {{allQuestions.length}}
<span style="color:green" *ngIf="correctAnswers.length > 5"> passed </span>
<span style="color:red" *ngIf="correctAnswers.length <= 5"> failed </span>
</p>
这是工作示例:StackBlitz
推荐阅读
- c# - 如何将值插入列表集合
- google-chrome - 在 Chromium 中切换隐藏工具栏
- c# - 通过 C# 在 word doc 中附加某些文档后,文档无法在 mac 上“另存为”
- python - 如何在 Python 中反转图像的绿色通道?
- visual-studio-code - VS Code:尝试连接数据库时出现“打开连接时出错连接 ECONNREFUSED 127.0.0.1:3306”
- c - 为什么数组不需要转换为指针
- linux - 使用 nohup 或类似方法,我可以在 nohup 中包含为生成输出而运行的命令/查询吗?
- r - 在双 y 轴 ggplot 中调整 y 轴范围
- c++ - 如何从头文件中删除 0-25 之外的数字?
- git - git clone 在 jenkins 中返回权限问题