2017-10-19 7 views
0

Je reçois cette erreur:Propriété X n'existe pas sur le type Y []

questions does not exist on type 'Quiz[]'

Ceci est mon modèle

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

questions : Questions[] 
} 

export interface Questions { 

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

} 

Et c'est mon code

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

export class ProfComponent { 

quiz = [] as Quiz[]; 


nextQuestion(quiz) { 

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


} 

Je ne peux pas pousser les données dans quiz.questions

quoi de faux?

+0

async nextQuestion (jeu-questionnaire) { this.quiz.push attendent (jeu-questionnaire) } – Afnor

Répondre

0

Vous déclarez quiz la propriété sous forme de tableau via Quiz[], donc vous avez besoin d'accéder à un objet de tableau pour pouvoir accéder à la propriété questions.

Mais vous voulez probablement redéclarer la propriété juste Quiz ...

Aussi, vous devez instancier le tableau questions premier à pouvoir appeler push là-dessus.

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

export class ProfComponent { 

    quiz = {questions: []} as Quiz; 

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

} 

Ou si vous voulez avoir tableau de quizz, fais comme ça:

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

Mais si je veux que la variable ** quiz ** soit un tableau, comment pourrais-je faire ça? – Afnor

+0

Ensuite, vous devez avoir une instance de quiz dans ce tableau. Mettra à jour ma réponse. –

0

Avant de pousser les valeurs, vous devez initialiser le tableau,

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

la même erreur dans la ligne que vous avez ajouté – Afnor

0

Soit

quiz = new Quiz(); 

ou

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

Lorsque vous initialisez quiz comme tableau, vous devez adresser une entrée de gamme spécifique pour obtenir une Quiz réelle, ou vous ne faites pas un tableau si ce n'est pas l'intention

+0

Je veux stocker plusieurs ** quiz ** dans Quiz [] donc j'ai besoin de ce tableau, j'ai essayé votre solution mais j'ai l'erreur ** this.quiz [0] .questions.push n'est pas une fonction ** – Afnor

+0

doit être un 'Quiz 'd'abord dans' this.quiz [0] '. Peut-être un 'this.quiz.push (new Quiz());' avant le 'this.quiz [0] .questions.push (quiz.questions);' –

+0

j'oublie de mentionner que j'ai déjà réussi à pousser le premier données dans mon tableau mais je ne peux pas accéder à la variable ** this.quiz.questions ** pour pousser plus de questions, je ne sais pas pourquoi! – Afnor