Angular/Ionic: ngFor 返回空值
Angular/Ionic: ngFor returning empty value
所以我正在练习一些 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'
}
]
}
];
然后我有我的 home.ts:
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,它会显示 return 3,这看起来是正确的,但由于某些原因它不会 return 来自我的数据。请问有人能帮我吗?伙计们干杯!
您正在混淆关卡,您可以根据自己的喜好在不同的方向上进行更改,但总体思路是您的对象和对象数组以您意想不到的方式嵌套。您的 *ngFor
应如下所示:*ngFor="let singleItem of itemCollection.items"
.
这是因为 itemCollections 被定义为具有单个键值对的对象。关键是 items
并且 items
被定义为您要在 *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'
}
]
}
];
然后我有我的 home.ts:
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,它会显示 return 3,这看起来是正确的,但由于某些原因它不会 return 来自我的数据。请问有人能帮我吗?伙计们干杯!
您正在混淆关卡,您可以根据自己的喜好在不同的方向上进行更改,但总体思路是您的对象和对象数组以您意想不到的方式嵌套。您的 *ngFor
应如下所示:*ngFor="let singleItem of itemCollection.items"
.
这是因为 itemCollections 被定义为具有单个键值对的对象。关键是 items
并且 items
被定义为您要在 *ngFor
.