javascript – Nachdem AngularJS die Backend-Daten abgerufen und der Mitgliedsvariablen zugewiesen hat, meldet die Frontkonsole einen Fehler, dass die Mitgliedsvariable undefiniert ist.
巴扎黑
巴扎黑 2017-05-19 10:09:49
0
1
439

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

巴扎黑
巴扎黑

Antworte allen(1)
黄舟

出现这个错误可能exercise 就已经是undefined 了吧,所以才没有name这个属性,才会报错,而不是exercise 的变量没有赋值

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!