【问题标题】:*ngFor object attribute undefined*ngFor 对象属性未定义
【发布时间】:2016-08-03 16:04:33
【问题描述】:

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

这是我的代码:

# 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”

谢谢!

【问题讨论】:

    标签: angular ionic2 ngfor


    【解决方案1】:

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

    <div *ngFor="let item of myVar?.attr"></div>
    

    【讨论】:

    • 谢谢,这正是我想要的!你知道是否可以将这样的东西用于 Array 位置?喜欢myVar?[0]
    • @akz92 你可以做到这一点.. 但你为什么要这样做。当您收集的每个元素都被ngFor捕获时
    • 我只是好奇 :) 我以前从未听说过这个运算符
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    相关资源
    最近更新 更多