recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Une fois qu'Angularjs a obtenu les données backend et les a attribuées à la variable membre, la console frontale signale une erreur indiquant que la variable membre n'est pas définie.

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

巴扎黑巴扎黑2747 Il y a quelques jours464

répondre à tous(1)je répondrai

  • 黄舟

    黄舟2017-05-19 10:11:49

    Cette erreur peut se produire car la variable exercise 就已经是undefined 了吧,所以才没有name这个属性,才会报错,而不是exercise n'a pas de valeur

    répondre
    0
  • Annulerrépondre