angularjs取得後端資料後賦值給成員變量,前台console報成員變數undefined的錯誤,錯誤提示如下:
EXCEPTION: Error in ./ExerciseDetailComponent class ExerciseDetailComponent - inline template:3:12 caused by: Cannot read property 'name' of undefined
另一個錯誤提示
ORIGINAL EXCEPTION: Cannot read property 'name' of undefined
程式碼如下:
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();
}
}
因為,錯誤代碼提示是我exercise內的屬性沒有定義,所以我把上面exercise聲明的程式碼改成如下程式碼就可以從後台拿到的資料賦值給exercise成員變數了,而且前台顯示的資料也不是undefined,而是數據中所獲得的數據。雖然問題用這個方法可以解決,但是這樣很影響程式碼可讀性。
exercise: Exercise = {
id: undefined,
name: undefined,
timerDuration: undefined
};
我想知道這是什麼原因造成的?理論上從後台拿到的資料已經開啟記憶體空間了,應該可以直接賦值給成員變數啊,不用成員變數也初始化。
而且我另一個根據angular2官方教程寫的component也是只聲明了成員變量,並沒有初始化,就可以得到後台的數據啊。
求解答