2017-06-09 132 views
0

問題使用ngFor JSON對象:如何遍歷在角4

我有以下代碼:

<div> 
    {{ data | json }} 
</div> 

其產生在以下json格式

[ 
{ 
    "display_title":"Megan Leavey", 
    "mpaa_rating":"PG-13", 
    "critics_pick":1, 
    "byline":"NEIL GENZLINGER", 
    "headline":"Review: In ‘Megan Leavey,’ a Marine, Her Dog and a Bond Forged in War", 
    "summary_short":"Based on a true story, this film, starring Kate Mara, is both harrowing and heartstring-tugging.", 
    "publication_date":"2017-06-08", 
    "opening_date":"2017-06-09", 
    "date_updated":"2017-06-09 02:44:28", 
    "link":{ 
    "type":"article", 
    "url":"http://www.nytimes.com/2017/06/08/movies/megan-leavey-review-kate-mara.html", 
    "suggested_link_text":"Read the New York Times Review of Megan Leavey" 
    }, 
    "multimedia":{ 
    "type":"mediumThreeByTwo210", 
    "src":"https://static01.nyt.com/images/2017/06/09/arts/09MEGAN/09MEGAN-mediumThreeByTwo210.jpg", 
    "width":210, 
    "height":140 
    } 
}, 
{ 
    "display_title":"The Hero", 
    "mpaa_rating":"R", 
    "critics_pick":1, 
    "byline":"JEANNETTE CATSOULIS", 
    "headline":"Review: For an Aging Actor, Another Chance to Be ‘The Hero’", 
    "summary_short":"Brett Haley’s low-key feature, about an older actor seeking redemption after being reduced to a cliché, belongs to its star, Sam Elliott.", 
    "publication_date":"2017-06-08", 
    "opening_date":"2017-06-09", 
    "date_updated":"2017-06-09 02:44:28", 
    "link":{ 
    "type":"article", 
    "url":"http://www.nytimes.com/2017/06/08/movies/the-hero-review-sam-elliott.html", 
    "suggested_link_text":"Read the New York Times Review of The Hero" 
    }, 
    "multimedia":{ 
    "type":"mediumThreeByTwo210", 
    "src":"https://static01.nyt.com/images/2017/06/09/arts/09HERO/09HERO-mediumThreeByTwo210.jpg", 
    "width":210, 
    "height":140 
    } 
} 
] 

和我的pipe結果代碼

import { Pipe, PipeTransform} from '@angular/core'; 

@Pipe({name: 'keys'}) 
export class CustomPipe implements PipeTransform { 
transform(value, args:string[]) : any { 
    if (!value) { 
    return value; 
    } 

let keys = []; 
for (let key in value) { 
    keys.push({key: key, value: value[key]}); 
    } 
    return keys; 
} 
} 

運用iteration a json object on Ngfor in angular 2建議,

我想實現這樣的電影標題:

<ul class="suggestions" > 
    <li class="suggestion1" *ngFor="#movie of data | keys"> 

     <a href="#" target="_blank" class="username">{{ movie.display_title }} </a> 

    </li> 

</ul> 

但它拋出error

zone.js:642 Unhandled Promise rejection: Template parse errors: Parser Error: Unexpected token # at column 1 in [#movie of data | keys] in ng:///AppModule/RoughWorkComponent.html

我使用Angular 4.1.3

+0

你使用哪個版本的角? – echonax

+0

我正在使用Angular 4.1.3 – Hiranya

回答

3
*ngFor="#movie of data | keys"> 

需求是

*ngFor="let movie of data | keys"> 

您正在使用舊的語法

編輯:作爲@AJT_82規定的對象是一個數組不是一個JSON,所以沒有必要管:

*ngFor="let movie of data"已經足夠了

+0

它顯示空白行 – Hiranya

+1

@Hiranya你可以刪除'if(!value){ return value; }'線並嘗試? – echonax

+0

完成但仍然相同 – Hiranya