9

我从来自 Angular 1 的 Angular 2 开始,我不知道如何在对象的属性上使用 ngFor。 this.myVar是根据定义attr属性的 HTTP 请求的结果定义的。

这是我的代码:

# my_page.ts
import {Page} from 'ionic-angular';
import {MyService} from '../../services/my_service';

@Page({
  templateUrl: 'build/pages/my_page/my_page.html',
  providers: [MyService]
})


export class MyPage {
  public myVar;

  constructor(private myService: MyService) {
    this.myService.fetch().subscribe(
      data => this.myVar = data
    );
  }
}

# my_page.html
<div *ngFor="#item of myVar.attr">
</div>

这是错误:

例外:TypeError:无法读取 [myVar.attr in ...] 中未定义的属性“attr”

谢谢!

4

1 回答 1

29

因为最初直到ajax完成myVar时在其中没有任何值&在评估 的表达式时ngFor,它会尝试访问attr未定义对象的属性。一定要使用 [ Elvis operator][1],?让它检查对象是否已定义,如果已定义,则仅评估对象的attr属性。

<div *ngFor="let item of myVar?.attr"></div>
于 2016-04-12T20:43:41.853 回答