属性X在类型Y []上不存在

时间:2017-10-19 18:10:00

标签: angular typescript

我收到了这个错误:

  类型'测验[]'

中不存在

问题

这是我的模特

export interface Quiz {
$key ?: string;
categorie ?: string;

questions : Questions[]
}

export interface Questions {

id ?: number;
question ?: string;
answer?: string;

}

这是我的代码

import {Quiz} from "../models/quiz";

export class ProfComponent {

quiz = [] as  Quiz[];


nextQuestion(quiz) {

    this.quiz.questions.push(quiz.questions)
}


}

我无法将数据推送到测验。问题

可能出错?

3 个答案:

答案 0 :(得分:0)

在推送值之前,您需要初始化数组

nextQuestion(quiz) {
     this.quiz.questions = [];
    this.quiz.questions.push(quiz.questions);
}

答案 1 :(得分:0)

您通过quizQuiz[]属性声明为数组,因此您需要访问数组项才能访问questions属性。

但您可能希望将该属性重新声明为Quiz ...

您还需要首先实例化questions数组才能在其上调用push

import {Quiz} from "../models/quiz";

export class ProfComponent {

  quiz = {questions: []} as Quiz;

  nextQuestion(quiz) {
    this.quiz.questions.push(quiz.questions)
  }

}

或者如果你想要有一系列的quizes,可以这样做:

import {Quiz} from "../models/quiz";

export class ProfComponent {

  quizes = [{questions: []}] as Quiz[]; // array of Quiz objects

  nextQuestion(quiz) {
    this.quizes[0].questions.push(quiz.questions); // access the first quiz
  }

}

答案 2 :(得分:0)

无论

quiz = new Quiz();

this.quiz[0].questions.push(quiz.questions)

当您将quiz初始化为数组时,您需要寻址特定的数组条目以获取实际的Quiz,或者如果不是意图,则不要将其设为数组