JSON ファイルからデータを取得してフォームを作成しようとしています。
これが私のテンプレートの一部です:
<div class="form-group">
<label for="power">Power</label>
<select class="form-control" id="power" required>
<option *ngFor="let p of heroes" [value]="p.level">{{p.level}}</option>
</select>
</div>
リモート JSON ファイルの一部を次に示します。
{
"data": [
{
"level": "newbie",
"places": [
{
"place": "earth",
"categories": [
{
"category": "human",
"values": [
...
それは問題なく動作しnewbie
、メニューに他の選択肢がありselect
ます。しかし、場所をループしたいので、html テンプレートを次のように編集します。
<div class="form-group">
<label for="power">Power</label>
<select class="form-control" id="power" required>
<option *ngFor="let p of heroes[0].places" [value]="p.place">{{p.place}}</option>
</select>
</div>
JSONファイルからデータを取得するために使用するサービスは次のとおりです。
@Injectable()
export class HeroService {
private url = 'app/mockups/heroes.json';
constructor(private http: Http) { }
getHeroes(): Promise<Hero[]> {
return this.http.get(this.url)
.toPromise()
.then(response => response.json().data as Hero[])
.catch();
}
}
そしてここにあるhero.component
:
export class HeroComponent implements OnInit {
heroes: Hero[];
constructor(private heroService: HeroService) { }
ngOnInit():void {
this.getHeroes();
}
getHeroes(): void {
this.heroService.getHeroes().then(heroes => this.heroes = heroes);
}
しかし、「未定義のプロパティ '0' を読み取れません」というエラーが表示されます。
なんで?