Pousser l'objet dans le nouveau tableau avec les interfaces en Angular2

Im la recherche d'une liste d'objets à partir d'un service en Angular2.

Sur cliquez sur je veux mettre l'objet à partir de mon ngFor sur un nouveau tableau (avec la même interface).

Je suis capable d'afficher la liste des éléments de l'amende juste. Je suis également en mesure d'afficher l'élément que j'ai sélectionné dans la console, mais je ne suis pas en mesure de pousser cet objet dans un nouveau tableau avec la même interface.

Mon interface:

export interface Item {
    id: string,
    name: string,
    icon_url: string,
    exterior: string,
    type: string,
    tag: string,
    addedClass: string,
    selected: boolean
}

Mon composant:

import {Component, OnInit, DoCheck} from 'angular2/core';
import {Item} from './../interfaces/interfaces.ts';
import {ItemService} from './../services/item.service.ts';


@Component({
    template: `
        <h2>Add item</h2>
        <div class="itemlist">
            <ul class="items">
                <li 
                    *ngFor="#item of items"
                    [class.selected]="item === selectedItem"
                    (click)="onSelect(item)"
                >
                    <span class="item">
                        {{item.name}}
                    </span>
                </li>
            </ul>
        </div>
    `
})

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);
    }

}

Les erreurs que j'obtiens:

D'erreur lors de l'évaluation de la "cliquez sur"

TypeError: Cannot read property 'push' undefined

L'enregistrement de l'objet, qui fonctionne bien, j'ai juste ne peut pas pousser sur ce.selectedItems.

  • C'est parce que vous n'avez pas initialisé la propriété. Il suffit de changer à public selectedItems: Item[] = [];