2017-10-19 4 views
0

Ich erhalte diesen Fehler:Property X existiert nicht auf Typ Y []

questions does not exist on type 'Quiz[]'

Das ist mein Modell

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

questions : Questions[] 
} 

export interface Questions { 

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

} 

Und dies ist mein Code

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

export class ProfComponent { 

quiz = [] as Quiz[]; 


nextQuestion(quiz) { 

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


} 

Ich kann keine Daten in quiz.questions

was könnte falsch sein?

+0

async nextQuestion (Quiz) { erwarten this.quiz.push (Quiz) } – Afnor

Antwort

0

Sie sind quiz Eigenschaft als Array über Quiz[] erklärt, daher müssen Sie Artikel von Array zugreifen zu können, questions Eigenschaft zuzugreifen.

Aber Sie wollen wahrscheinlich die Eigenschaft nur Quiz ...

Auch müssen Sie neu deklarieren die questions Array instanziiert zunächst in der Lage sein push darauf zu nennen.

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

export class ProfComponent { 

    quiz = {questions: []} as Quiz; 

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

} 

Oder wenn Sie Array von Quiz haben wollen, tun Sie es wie folgt aus:

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

Aber wenn ich möchte, dass die ** Quiz ** Variable ein Array ist, wie könnte ich das tun? – Afnor

+0

Dann müssen Sie eine Quiz-Instanz in diesem Array haben. Wird meine Antwort aktualisieren. –

0

Bevor Werte schieben, müssen Sie das Array initialisieren,

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

der gleiche Fehler in der Zeile, die Sie hinzugefügt haben – Afnor

0

Entweder

quiz = new Quiz(); 

oder

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

Wenn Sie initialisieren quiz als Array, müssen Sie ansprechen eine bestimmte Array-Eintrag eine tatsächliche Quiz zu bekommen, oder Sie es nicht ein Array machen, wenn dies nicht die Absicht

ist
+0

Ich möchte mehrere Quiz ** in Quiz [] speichern, also brauche ich dieses Array, ich habe Ihre Lösung versucht, aber ich bekomme den Fehler ** this.quiz [0] .fragen.push ist keine Funktion ** – Afnor

+0

Dort muss zuerst ein 'Quiz' in' this.quiz [0] 'sein. Vielleicht ein 'this.quiz.push (neues Quiz());' vor dem 'this.quiz [0] .questions.push (quiz.questions);' –

+0

Ich vergesse zu erwähnen, dass ich es bereits geschafft habe, das erste zu drücken Daten in meinem Array, aber ich kann nicht auf die Variable ** this.quiz.questions ** zugreifen, um weitere Fragen zu schieben, ich weiß nicht warum! – Afnor

Verwandte Themen