Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在我的角度测验应用程序中修正多个答案问题的得分?_Angular_Typescript - Fatal编程技术网

Angular 如何在我的角度测验应用程序中修正多个答案问题的得分?

Angular 如何在我的角度测验应用程序中修正多个答案问题的得分?,angular,typescript,Angular,Typescript,对于多答案问题,应选择所有正确答案以增加分数,而不仅仅是一个正确答案。如果选择了一个正确答案,然后将下一个答案标记为不正确,则分数仍然增加1;只有当所有正确答案都给出时,它才应该增加。。。如果给出了一个不正确的答案,然后给出了所有正确的答案,那么分数也应该增加,或者如果给出了正确的答案,然后给出了一个不正确的答案,那么分数应该增加。此外,单答案问题应按预期增加分数。请帮我解决这个问题。在此处查看我的应用程序: 用于增加分数的当前代码段(在src->app->containers->quick->

对于多答案问题,应选择所有正确答案以增加分数,而不仅仅是一个正确答案。如果选择了一个正确答案,然后将下一个答案标记为不正确,则分数仍然增加1;只有当所有正确答案都给出时,它才应该增加。。。如果给出了一个不正确的答案,然后给出了所有正确的答案,那么分数也应该增加,或者如果给出了正确的答案,然后给出了一个不正确的答案,那么分数应该增加。此外,单答案问题应按预期增加分数。请帮我解决这个问题。在此处查看我的应用程序:

用于增加分数的当前代码段(在src->app->containers->quick->quick.component.ts->checkifansweredcorrect()中):


解决方案非常简单。将“对/错”逻辑与“下一步按钮”逻辑分开

你不应该有这样的东西:

if (!incorrectAnswerFound) {
  this.sendCorrectCountToQuizService(this.correctCount + 1);
}
advanceToNextQuestion() { ... }
相反,您的函数应该如下所示:

if (!incorrectAnswerFound) {
  this.sendCorrectCountToQuizService(this.correctCount + 1);
}
advanceToNextQuestion() { ... }

不要试图将逻辑组合成单个函数。这就是你的应用程序无法运行的原因。

@integral100x

您需要更改DependencyInjectionQuizComponent中的CheckIfAnsweredCorrect方法逻辑

您需要检查您的correctAnswerFound是否大于-1,因为如果您的数组已找到位置0中的元素。由于值0,If循环已退出。因此,我改为检查大于-1

if (correctAnswerFound > -1) {
        this.sendCorrectCountToQuizService(this.correctCount + 1);
}
而不是

if (correctAnswerFound) {
    this.sendCorrectCountToQuizService(this.correctCount + 1);
}

谢谢

此问题目前针对您的应用程序。如果这个问题更一般,它将与其他问题相关。请尽量将您的代码/问题描述减少到最低限度。也许这甚至可以帮助你找到解决方案。我已经检查了你的代码,它是如此复杂和不干净。我建议重构你的代码和逻辑,例如在dependency-injection-quick.component.ts你完全重构checkifansweredcorrect我想我可能需要添加到if语句中,以检查useranswersfreachquestion数组(也在QuizService中)中的userAnswers是否正确,这样就可以了,不知道该怎么做。谢谢你的简单修复。在问题1(多选题)中,我希望选择所有正确答案,以提高分数,而不仅仅是一个正确答案。同样在mat accordion的ResultsComponent中的正确答案字段中,我仍然得到单答案问题的“选项”,应该是“选项”。我解决了关于单答案问题选项的问题,不确定如何确定多答案问题的分数。