Maison > Questions et réponses > le corps du texte
Une fois qu'angularjs a obtenu les données back-end et les a attribuées à la variable membre, la console frontale signale une erreur indiquant que la variable membre n'est pas définie. Le message d'erreur est le suivant :
EXCEPTION : Erreur dans la classe ./ExerciseDetailComponent ExerciseDetailComponent - modèle en ligne : 3:12 causée par : Impossible de lire la propriété 'nom' de undefined
Un autre message d'erreur
EXCEPTION ORIGINALE : Impossible de lire la propriété 'nom' non définie
Le code est le suivant :
import { Component, OnInit } from '@angular/core';
import { Exercise } from './exercise'
import { ExerciseService } from './exercise.service'
@Component({
selector: 'exercise-detail',
templateUrl: './exercise-detail.component.html',
})
export class ExerciseDetailComponent implements OnInit {
exercise: Exercise;
constructor(private exerciseService: ExerciseService) {}
getExercise(): void {
this.exerciseService.getExercise().then(exercise => this.exercise = exercise);
}
ngOnInit(): void {
this.getExercise();
}
}
Parce que le code d'erreur indique que les propriétés de mon exercice ne sont pas définies, j'ai donc modifié le code de la déclaration d'exercice ci-dessus par le code suivant, et les données obtenues en arrière-plan peuvent être affectées aux variables membres de l'exercice, et les données affiché à la réception n'est pas indéfini, mais les données obtenues à partir des données. Bien que le problème puisse être résolu en utilisant cette méthode, elle affecte grandement la lisibilité du code.
exercise: Exercise = {
id: undefined,
name: undefined,
timerDuration: undefined
};
Je veux savoir quelle est la cause de cela ? Théoriquement, les données obtenues en arrière-plan ont déjà ouvert de l'espace mémoire et devraient être directement affectées aux variables membres sans initialiser les variables membres.
Et un autre composant que j'ai écrit sur la base du tutoriel officiel d'Angular2 déclare uniquement les variables membres et ne les initialise pas, afin que les données d'arrière-plan puissent être obtenues.
Veuillez répondre
黄舟2017-05-19 10:11:49
Cette erreur peut se produire car la variable exercise
就已经是undefined
了吧,所以才没有name
这个属性,才会报错,而不是exercise
n'a pas de valeur