Recibo ese error:

las preguntas no existen en el tipo 'Prueba []'

Esta es mi modelo

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

questions : Questions[]
}

export interface Questions {

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

}

Y este es mi código

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

export class ProfComponent {

quiz = [] as  Quiz[];


nextQuestion(quiz) {

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


}

No puedo insertar datos en quiz.questions

¿Qué podría estar mal?

0
Afnor 19 oct. 2017 a las 21:10

3 respuestas

La mejor respuesta

Está declarando la propiedad quiz como matriz a través de Quiz[], por lo tanto, necesita acceder al elemento de la matriz para poder acceder a la propiedad questions.

Pero probablemente desee volver a declarar la propiedad a solo Quiz ...

También debe crear una instancia de la matriz questions primero para poder llamar a push en ella.

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

export class ProfComponent {

  quiz = {questions: []} as Quiz;

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

}

O si desea tener una variedad de presupuestos, hágalo así:

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
  }

}
0
Martin Adámek 19 oct. 2017 a las 18:32

Cualquiera de los dos

quiz = new Quiz();

O

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

Cuando inicializa quiz como matriz, debe direccionar una entrada de matriz específica para obtener una Quiz real, o no la convierte en una matriz si esa no es la intención

0
Günter Zöchbauer 19 oct. 2017 a las 18:37

Antes de insertar valores, debe inicializar la matriz,

nextQuestion(quiz) {
     this.quiz.questions = [];
    this.quiz.questions.push(quiz.questions);
}
0
Sajeetharan 19 oct. 2017 a las 18:11