Как отображать вложенные объекты и/или массивы в angular 2

Я получаю данные json из серверной части (api). И я хочу отобразить это с помощью ngFor. Я получил сообщение об ошибке, например: "Не удается найти другой вспомогательный объект '[object Object]'" из консоли.

позже я попробовал это:

@Pipe({
    name: 'mapToIterable'
})
export class MapToIterable implements PipeTransform{
    transform(map: {}, args: any[] = null): any {
        if (!map)
            return null;
        return Object.keys(map)
            .map((key) => ({ 'key': key, 'value': map[key] }));
    }
}

а потом на мой взгляд:

 <li *ngFor="let detail of getEventDetails | mapToIterable">
            Creator Email: {{detail.creator.email}}
     </li>

на этот раз я не получил ошибку, но нет отображаемых значений {{detail.creator.email}}

Данные из бэкенда

 {
        "banner_image": null, 
        "categories": [], 
        "creator": {
            "email": "[email protected]", 
            "first_name": "Prince", 
            "gender": true, 
            "id": 15, 
            "last_name": "Odame", 
            "subscribed_categories": [], 
            "watchlist": []
        }, 
        "creator_id": 15, 
        "description": "Learn how to install solar panels in 3 days and make real money all your lifetime", 
        "faqs": [], 
        "id": 6, 
        "is_verified": true, 
        "max_tickets_per_user": 1, 
        "shows": [
            {
                "address": "Engineering Auditorium, College of Engineering, KNUST, Kumasi", 
                "city": "Kumasi", 
                "country": "Ghana", 
                "end_time": "2016-08-03T14:30:00+00:00", 
                "event_id": 6, 
                "id": 5, 
                "is_online": false, 
                "start_time": "2016-08-01T08:30:00+00:00", 
                "state": "Ashanti", 
                "ticket_types": [], 
                "venue": "Engineering Auditorium"
            }
        ], 
        "tags": [], 
        "title": "Solar Panels Installation Workshop"
    }

заранее спасибо


person adongo    schedule 12.07.2016    source источник
comment
Это так не сработает. Прочтите код канала — теперь у вас есть объекты ключ/значение в массиве. Проверьте этот плункер: plnkr.co/edit/wuVNDpVERNNiXlAn8GJk?p=preview   -  person rinukkusu    schedule 12.07.2016
comment
Спасибо @rinukkusu, у меня это работает, но есть ли способ получить значения подмассивов   -  person adongo    schedule 12.07.2016
comment
Не с *ngFor. Без него вы можете просто использовать {{getEventDetails.creator.email}}.   -  person rinukkusu    schedule 12.07.2016


Ответы (1)


Вы, вероятно, просто хотите сделать это:

<li>Creator Email: {{getEventDetails.creator.email}}</li>

И для массивов:

<li *ngFor="let show of getEventDetails?.shows">
   Show ID: {{show.id}}
</li>
person rinukkusu    schedule 12.07.2016