Nachdem AngularJS die Back-End-Daten abgerufen und der Mitgliedsvariablen zugewiesen hat, meldet die Front-End-Konsole einen Fehler, dass die Mitgliedsvariable undefiniert ist. Die Fehlermeldung lautet wie folgt:
EXCEPTION: Fehler in der ./ExerciseDetailComponent-Klasse ExerciseDetailComponent – Inline-Vorlage:3:12 verursacht durch: Eigenschaft „Name“ von undefiniert kann nicht gelesen werden
Noch eine Fehlermeldung
URSPRÜNGLICHE AUSNAHME: Eigenschaft „Name“ von undefiniert kann nicht gelesen werden
Der Code lautet wie folgt:
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();
}
}
Da der Fehlercode darauf hinweist, dass die Eigenschaften in meiner Übung nicht definiert sind, habe ich den Code der Übungsdeklaration oben in den folgenden Code geändert, und die aus dem Hintergrund erhaltenen Daten können den Variablen der Übungsmitglieder und den Daten zugewiesen werden Die Anzeige an der Rezeption ist nicht undefiniert, sondern die aus den Daten gewonnenen Daten. Obwohl das Problem mit dieser Methode gelöst werden kann, beeinträchtigt es die Lesbarkeit des Codes erheblich.
exercise: Exercise = {
id: undefined,
name: undefined,
timerDuration: undefined
};
Ich möchte wissen, was die Ursache dafür ist? Theoretisch haben die aus dem Hintergrund erhaltenen Daten bereits Speicherplatz freigesetzt und sollten Mitgliedsvariablen direkt zugewiesen werden, ohne die Mitgliedsvariablen zu initialisieren.
Und eine andere Komponente, die ich basierend auf dem offiziellen Angular2-Tutorial geschrieben habe, deklariert nur Mitgliedsvariablen und initialisiert sie nicht, damit die Hintergrunddaten abgerufen werden können.
Bitte antworten Sie
出现这个错误可能
exercise
就已经是undefined
了吧,所以才没有name
这个属性,才会报错,而不是exercise
的变量没有赋值