Angular2 * ngFor:“无法读取未定义的属性'0'”

聪明的老鼠

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

它没有问题,我可以newbieselect菜单中找到其他选择但是我想在地方循环播放,所以我以这种方式编辑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'”错误。

为什么?

聪明的老鼠

我解决了这个问题。我收到此错误,是因为我异步获取数据,并且当Angular尝试解析绑定时,第一次数据仍然为null时因此heroes[0]失败。

因此,我解决了初始化heroes数组并使用“ Elvis运算符”的问题:

heroes: Hero[];而不是heroes: Hero[] = [];在组件中。

heroes[0]?.places而不是heroes[0].places在html模板中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular无法读取未定义的属性

来自分类Dev

(Angular2 和 Typescript)Angular 的 DatePicker 无法读取未定义的属性“切换”

来自分类Dev

NgZone / Angular2 / Ionic2 TypeError:无法读取未定义的属性“运行”

来自分类Dev

Javascript Uncaught TypeError:无法读取未定义的属性“ 0”

来自分类Dev

TypeError:无法读取未定义的CryptoJS的属性“ 0”

来自分类Dev

无法读取未定义JSON的属性“ 0”

来自分类Dev

无法读取未定义的属性“ 0”-JavaScript

来自分类Dev

$ .getJSON,无法读取未定义的属性“ 0”

来自分类Dev

未捕获的TypeError:无法读取未定义的属性“ 0”

来自分类Dev

未捕获的TypeError:无法读取未定义的属性“ 0”

来自分类Dev

For循环:TypeError:无法读取未定义的属性“ 0”

来自分类Dev

收到此错误:无法读取未定义的属性“0”

来自分类Dev

类型错误,无法读取未定义的属性 0

来自分类Dev

无法读取文件上传的未定义属性“0”

来自分类Dev

Webpacked Angular2应用程序TypeError:无法读取未定义的属性“ getOptional”

来自分类Dev

angular2形式-无法读取未定义的属性替换

来自分类Dev

Angular2 + RxJS-无法读取未定义的下一个属性

来自分类Dev

Angular2 beta 11无法读取未定义的属性区域

来自分类Dev

Webpacked Angular2应用程序TypeError:无法读取未定义的属性“ getOptional”

来自分类Dev

使用ngFormModel(ES6)时angular2无法读取未定义的属性'validator'

来自分类Dev

Angular2(RC-4):无法读取未定义的属性“ pathsWithParams”

来自分类Dev

无法读取未定义Angular 2的属性

来自分类Dev

Angular - Ionic 2 - 无法读取未定义的属性“订阅”

来自分类Dev

角度2-无法读取带有上下文错误上下文的未定义错误的属性“ 0”:[对象对象]

来自分类Dev

无法读取Angular Mobile中未定义的属性“ makeCurrent”

来自分类Dev

无法读取Angular JS中未定义的属性成功

来自分类Dev

Angular TypeError:无法读取未定义的属性“ then”

来自分类Dev

Angular无法读取未定义的属性“ push”

来自分类Dev

Angular-无法读取未定义的属性“ $ invalid”

Related 相关文章

  1. 1

    Angular无法读取未定义的属性

  2. 2

    (Angular2 和 Typescript)Angular 的 DatePicker 无法读取未定义的属性“切换”

  3. 3

    NgZone / Angular2 / Ionic2 TypeError:无法读取未定义的属性“运行”

  4. 4

    Javascript Uncaught TypeError:无法读取未定义的属性“ 0”

  5. 5

    TypeError:无法读取未定义的CryptoJS的属性“ 0”

  6. 6

    无法读取未定义JSON的属性“ 0”

  7. 7

    无法读取未定义的属性“ 0”-JavaScript

  8. 8

    $ .getJSON,无法读取未定义的属性“ 0”

  9. 9

    未捕获的TypeError:无法读取未定义的属性“ 0”

  10. 10

    未捕获的TypeError:无法读取未定义的属性“ 0”

  11. 11

    For循环:TypeError:无法读取未定义的属性“ 0”

  12. 12

    收到此错误:无法读取未定义的属性“0”

  13. 13

    类型错误,无法读取未定义的属性 0

  14. 14

    无法读取文件上传的未定义属性“0”

  15. 15

    Webpacked Angular2应用程序TypeError:无法读取未定义的属性“ getOptional”

  16. 16

    angular2形式-无法读取未定义的属性替换

  17. 17

    Angular2 + RxJS-无法读取未定义的下一个属性

  18. 18

    Angular2 beta 11无法读取未定义的属性区域

  19. 19

    Webpacked Angular2应用程序TypeError:无法读取未定义的属性“ getOptional”

  20. 20

    使用ngFormModel(ES6)时angular2无法读取未定义的属性'validator'

  21. 21

    Angular2(RC-4):无法读取未定义的属性“ pathsWithParams”

  22. 22

    无法读取未定义Angular 2的属性

  23. 23

    Angular - Ionic 2 - 无法读取未定义的属性“订阅”

  24. 24

    角度2-无法读取带有上下文错误上下文的未定义错误的属性“ 0”:[对象对象]

  25. 25

    无法读取Angular Mobile中未定义的属性“ makeCurrent”

  26. 26

    无法读取Angular JS中未定义的属性成功

  27. 27

    Angular TypeError:无法读取未定义的属性“ then”

  28. 28

    Angular无法读取未定义的属性“ push”

  29. 29

    Angular-无法读取未定义的属性“ $ invalid”

热门标签

归档