javascript
  • loops
  • angular
  • iteration
  • ngfor
  • 2016-08-20 289 views 16 likes 
    16

    的對象屬性這是我的對象(它具有動態密鑰的n個。我只顯示了兩個在下面的例子中)如何遍歷在角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> 
    

    但上述內容似乎不起作用。我在做什麼錯,什麼是正確的語法?

    +0

    你嘗試obj的[I]''而不是'obj.i'? – 2016-08-20 23:23:29

    回答

    20

    你可以做這樣的事情:

    <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]}); 
    } 
    
    +1

    這太好了。幹得不錯! – Aarmora

    +0

    @Aarmora很高興知道這對你有幫助。 :) – eg16

    +3

    但讓o的obj in angular2是不允許的,因爲obj不可迭代,是否正確? – Ayyash

    18

    輕微修改@ 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> 
    
    相關問題