2017-08-13 2 views
2

Wenn ich versuche, zu einem Array in Typescript (in Ionic2 gewickelt) hinzuzufügen, bekomme ich eine Fehlermeldung, dass das Array nicht definiert ist, obwohl ich es deklariert habe. Ich habe versucht, es mit zwei verschiedenen Deklarationen zu deklarieren und das Problem nicht gefunden. Die beiden Erklärungen I verwendet werden, sind:Kann Eigenschaft nicht lesen 'Push' von undefined - Typescript

tracker: any[]; 

und

tracker: Array<any>; 

Das erste Mal, wenn ich versuche, etwas zu dem Array hinzufügen und wo ich die Fehler unten zu bekommen. Ich wollte die ganze Funktion enthalten, falls es etwas drin war, die neu definiert werden könnte, was ‚dies‘ ist:

// Answer Correctly 
    answerQuestionCorrectly(answer) { 
    let answerButton = <HTMLButtonElement>document.getElementById('answer-' + answer.AnswerId); 
    answerButton.addEventListener('click', (event) => { 
     // Increase the score 
     this.currentScore = this.currentScore + this.countdown; 
     // Set up quiz review 
     var correct = answer.AnswerText; 
     var qTrack = {no: this.questionNo, q: this.questionText, a: answer.AnswerText, c: correct} 
     console.log(qTrack); 
     this.tracker.push(qTrack); 
     console.log(this.tracker); 
     // Check for end of questions 
     if (this.questionNo < this.noOfQuestions) { 
     // Remove the old answers 
     var parent = document.getElementById('answers'); 
     this.answers.forEach(element => { 
      var button = <HTMLButtonElement>document.getElementById('answer-' + element.AnswerId); 
      parent.removeChild(button); 
     }); 
     // Re-init the timer 
     this.timer.initTimer(); 
     // Load Next Question 
     this.loadQuestion(); 
     } else { 
     // End the Quiz 
     this.endOfQuiz(); 
     } 
    }); 
    } 

Antwort

2

Diese Erklärungen geben nur die Typ der Variablen - es braucht auch einen Wert. Versuchen Sie etwas wie

var tracker: any[] = []; 

, um die Variable zu einem leeren Array zu initialisieren.

1

Sie haben das Array zu initialisieren, bevor Sie ein Objekt hinein schieben kann.

Tracker: beliebig [] = [];

1

Sie müssen es wie folgt initialisieren:

tracker: Array<any>=[]; 
Verwandte Themen