在数组中推送值不会显示在View angular

时间:2017-09-16 18:48:14

标签: arrays angular typescript ionic-framework

我正在尝试显示用户在特定测验中所做的错误答案。但它不会在我的HTML中显示数据。我在这里做错了什么?

在我的HTML上:

 <ion-slide *ngFor="let incorrect of wrongAnswers;let i=index">
  <ion-label>{{i+1}}</ion-label>
  <h5>{{incorrect.questionA}}</h5>
  <h5>{{incorrect.choice}}</h5>
  <h5>{{incorrect.answer}}</h5>
  <button ion-button (click)="error()"></button>
</ion-slide>

我的打字稿:

 wrongAnswers: any[] = [];


 if (answer.correct == false) {
  this.wrongAnswers.push([{
    questionA: question.questionText,
    choice: answer.selected,
    answer: answer.answer
  }]);
}

在我的控制台上,这是显示的内容:

enter image description here

2 个答案:

答案 0 :(得分:1)

您正试图将 array 推送到现有数组,如果您真的想这样做,请使用 concat

this.wrongAnswers.concat([{
    questionA: question.questionText,
    choice: answer.selected,
    answer: answer.answer
  }]);

如果您想推送一个对象,请移除 [] ,以便推送该对象

this.wrongAnswers.push({
    questionA: question.questionText,
    choice: answer.selected,
    answer: answer.answer
  });

答案 1 :(得分:0)

使用Array.prototype.push时数组引用不会改变,因此角度更改检测不知道更改。

而且你正在将一个数组推入你的数组而不是一个简单的对象。

在向数组添加项目时使用Array.prototype.concat创建新引用:

this.wrongAnswers = this.wrongAnswers.concat({
  questionA: question.questionText,
  choice: answer.selected,
  answer: answer.answer
});