javascript - Selepas angularjs memperoleh data bahagian belakang dan memberikannya kepada pembolehubah ahli, konsol hadapan melaporkan ralat bahawa pembolehubah ahli tidak ditentukan.
巴扎黑
巴扎黑 2017-05-19 10:09:49
0
1
503

Selepas angularjs memperoleh data bahagian belakang dan memberikannya kepada pembolehubah ahli, konsol bahagian hadapan melaporkan ralat bahawa pembolehubah ahli tidak ditentukan Mesej ralat adalah seperti berikut:

PENGECUALIAN: Ralat dalam kelas ./ExerciseDetailComponent ExerciseDetailComponent - templat sebaris:3:12 disebabkan oleh: Tidak dapat membaca 'nama' sifat undefined

Satu lagi mesej ralat

PENGECUALIAN ASAL: Tidak boleh membaca 'nama' sifat undefined

Kod adalah seperti berikut:

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();
    }
}

Oleh kerana kod ralat menunjukkan bahawa sifat dalam latihan saya tidak ditakrifkan, jadi saya menukar kod pengisytiharan latihan di atas kepada kod berikut, dan data yang diperoleh daripada latar belakang boleh diberikan kepada pembolehubah ahli latihan, dan data dipaparkan di meja depan bukan tidak ditentukan , tetapi data yang diperoleh daripada data. Walaupun masalah boleh diselesaikan menggunakan kaedah ini, ia sangat mempengaruhi kebolehbacaan kod.

exercise: Exercise = {
        id: undefined,
        name: undefined,
        timerDuration: undefined
    };

Saya nak tahu apa punca ni? Secara teorinya, data yang diperoleh daripada latar belakang telah pun membuka ruang ingatan, dan harus diberikan terus kepada pembolehubah ahli tanpa memulakan pembolehubah ahli.
Dan komponen lain yang saya tulis berdasarkan tutorial angular2 rasmi hanya mengisytiharkan pembolehubah ahli dan tidak memulakannya, supaya data latar belakang boleh diperolehi.

Sila jawab

巴扎黑
巴扎黑

membalas semua(1)
黄舟

Ralat ini mungkin berlaku kerana pembolehubah exercise 就已经是undefined 了吧,所以才没有name这个属性,才会报错,而不是exercise tidak diberikan nilai

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan