gpt4 book ai didi

arrays - Angular2 *ngFor : "Cannot read property ' 0' of undefined"

转载 作者:太空狗 更新时间:2023-10-29 18:03:31 25 4
gpt4 key购买 nike

我试图从 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": [
...

它没有问题,我在 select 菜单中得到 newbie 和其他选项。但是我想在地方循环,所以我以这种方式编辑 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’”错误。

为什么?

最佳答案

我猜你想要的是

*ngFor="let p of heroes?.data"

因为heroes好像是一个对象,而ngFor只能迭代数组。level 属性也在数组项中。

关于arrays - Angular2 *ngFor : "Cannot read property ' 0' of undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39343980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com