我从Angular2中的服务中检索对象列表.
点击后我想把我的ngFor中的对象放到一个新的数组上(使用相同的界面).
我能够很好地显示列表中的项目.我也能够显示我在控制台中选择的项目,但是我无法将此对象推送到具有相同界面的新阵列中.
我的界面:
export interface Item { id: string, name: string, icon_url: string, exterior: string, type: string, tag: string, addedClass: string, selected: boolean }
我的组件:
import {Component, OnInit, DoCheck} from 'angular2/core'; import {Item} from './../interfaces/interfaces.ts'; import {ItemService} from './../services/item.service.ts'; @Component({ template: `Add item
` }) export class AddTradeComponent implements OnInit { public items: Item[]; public selectedItems: Item[]; constructor(private _itemService: ItemService) { } getUserItems() { this._itemService.getUserItems().then(userItems => this.items = userItems); } ngOnInit() { this.getUserItems(); } onSelect(item) { console.log('items ', item); this.selectedItems.push(item); } }
- {{item.name}}
我得到的错误:
评估"点击"时出错
TypeError:无法读取未定义的属性"push"
记录对象工作正常,我只是无法将其推送到this.selectedItems.
您没有初始化阵列.在声明成员变量时初始化数组:
public items: Item[] = []; public selectedItems: Item[] = [];
或者在构造函数中初始化它们:
constructor() { this.items = []; this.selectedItems = []; }