Angular / Ionic:ng返回空值

时间:2017-12-30 23:49:25

标签: angular ionic-framework ngfor

所以我正在练习一些Angular / Ionic,并且我很难弄清楚为什么我的* ngFor不会显示我的数据。这对我来说似乎很简单,但我想我做的事情非常糟糕。

所以我有一个看起来像这样的item.interface.ts:

export interface Item {
    id: string;
    name: string;
}

看起来像这样的items.ts:

export default [
  {
        items:[

        {
            id:'1',
            name:'Milk'
        },

        {
            id:'2',
            name:'Wheat'
        },

        {
            id:'3',
            name:'Cheese'
        }


              ]

    }

];

然后我有我的家。:

    import { Component, OnInit } from '@angular/core';
    import { NavController, NavParams } from 'ionic-angular';

    import { Item } from '../../data/item.interface';
    import items from '../../data/items';



    @Component({
      selector: 'page-home',
      templateUrl: 'home.html'
    })

    export class HomePage implements OnInit {

        itemCollection: {items: Item[]}[];

      constructor(public navCtrl: NavController,
                  private navParams: NavParams){}

      ngOnInit(){
        this.itemCollection = items;
      }

  }

最后我的home.html:

<ion-header>
  <ion-navbar>
    <ion-buttons start>
        <button ion-button menuToggle>
            <ion-icon name="menu"></ion-icon>
        </button>
    </ion-buttons>
    <ion-title>Add Items</ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
    <ion-row>
        <ion-col text-center>
            <form>
                <label for="item">Type an item/ingredient name</label>
                <input type="text" name="item"><br>
                <button ion-button small type="submit">Add Item</button>
                <button ion-button small color="danger">Empty List</button>
            </form>
        </ion-col>
    </ion-row>  
    <ion-row>
        <ion-col>
            <ion-list>
                <button ion-item *ngFor="let singleItem of itemCollection">
                    <p>{{singleItem.name}}</p>
                </button>
            </ion-list>
        </ion-col>  
    </ion-row>
    <ion-row>
        <ion-col text-center>
            <button ion-button medium block>Scan</button>
        </ion-col>  
    </ion-row>    
</ion-content>

因此,当我在home.html中执行ngFor时,它只会打印任何内容,而不是singleItem.name

正如好奇心一样,如果我尝试打印singleItem.items.length,它会返回3,看起来是正确的,但由于某种原因它不会从我的数据中返回值。你能帮助我吗?干杯啦!

1 个答案:

答案 0 :(得分:0)

你正在混淆你的关卡,你可以根据自己的喜好在不同的方向进行更改,但一般的想法是你的对象和对象数组以你不期望的方式嵌套。您的*ngFor应如下所示:*ngFor="let singleItem of itemCollection.items"

这是因为itemCollections被定义为具有单个键值对的对象。关键是itemsitems被定义为您希望在*ngFor中使用的项目数组。