Как выполнить итерацию атрибутов объекта в Angular 2

Здесь мой объект (у него есть число динамических клавиш. В приведенном ниже примере показано только два)

let obj = {
abc:["some text", "some more text"],
xyz:["more text", "what do you think?", "I'm tired now"]

}

Здесь моя попытка петли выкинуть выше и распечатать все значения

 <div *ngFor='let item of obj ; let i = index;'>
            <p *ngFor="let value of obj.i">{{value}}
 </div>

Но вышеприведенное не работает. Что я делаю неправильно и какой правильный синтаксис?

Ответы

Ответ 1

Вы можете сделать что-то вроде этого:

<li *ngFor="let o of obj">
   <p *ngFor="let objArrayElement of generateArray(o)"> {{objArrayElement}} </p>
</li>

где generateArray выглядит следующим образом:

generateArray(obj){
   return Object.keys(obj).map((key)=>{ return obj[key]});
}

Ответ 2

небольшая модификация ответа @eg16, и это сработало как прелесть для меня -

функция generateArray выглядит так:

generateArray(obj){
    return Object.keys(obj).map((key)=>{ return {key:key, value:obj[key]}});
}

а шаблон -

<li *ngFor="let item of generateArray(data)">{{item.key}}: {{item.value}}</li>