2017-02-17 1 views
-1

Ich entwickle eine App in Angular 2 mit Typescript und habe ein Problem. Ich habe einen Dienst, der sucht Reihe von Fragen holt wie dieseSuche Eintrag nach Eigenschaft in benutzerdefinierten Objekt-Array

export class Question { 

    constructor(public id: number, 
       public question_text: string, 
       public answers: string[], 
       public user_answer: string = "none") // default to none, update on user input 

    {} 
} 

private questions: Question[] = [ 
    new Question(0, 
    'How often did you eat a portion of vegetables??', 
    ['Answer A','Answer B', 'Answer C', 'Answer D', 'Answer E', 'Answer F']), 
    new Question(1, 
    'How often did you eat a portion of fruit?', 
    ['Answer A','Answer B', 'Answer C', 'Answer D', 'Answer E', 'Answer F']), 

Dann habe ich einen Knopf bin, die Benutzer auf die Frage (alle Daten einschließlich der id) bearbeiten können. Mein updateQuestion sieht wie folgt aus:

updateQuestion(questionId: number, newQuestion: Question) { 
    //Find question in array 
    //Delete this entry 
    //Add new question to array 

}

Ich bin wirklich mit der ersten Aufgabe zu kämpfen: Frage in einem Array finden. Ich habe einige Kombinationen versucht, mit

this.questions.find(question => questionId == id) 

aber id ist undefiniert da, und ich bin nicht sicher, wie es zu bekommen. im Grunde

Problem dreht sich um richtigen Eintrag in den Fragen-Array zu finden, wo id = QuestionID

Jede Hilfe sehr geschätzt wird !!

+0

Okey aber hast Du diese 'id' Variable überall in Ihrem Projekt? –

+1

ist es 'this.questions.find (question => questionId == question.id)' – Jag

+0

Wie sieht eine 'Frage' aus? Jag hat wahrscheinlich Recht. – Cerbrus

Antwort

0

Das Problem war mit Frage-Modell. Ich habe meine Frage Modell sein geändert:

export class Question { 

public _id: number; 
public _question_text: string; 
public _answers: string[]; 
public _user_answer: string; 

constructor(public id: number, 
      public question_text: string, 
      public answers: string[], 
      public user_answer: string = "none") // default to none, update on user input 

{ 
    this._id = id; 
    this._question_text = question_text; 
    this._answers = answers; 
    this._user_answer = user_answer; 
} 
} 

Und dann meinen Dienst:

updateQuestion(questionId: number, newQuestion: Question) { 
    const questionIndex = this.questions.findIndex(x => x._id == questionId); 
Verwandte Themen