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.
巴扎黑
巴扎黑 2017-05-19 10:09:49
0
1
462

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

巴扎黑
巴扎黑

répondre à tous(1)
黄舟

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal