I want to render JSON data as separate list-item elements in view via Pipe in my Angular2 app, but my code isn't working.
My JSON data (I load it via http):
[
{
"name": "Release One",
"songs": [
"Song 1",
"Song 2",
"Song 3"
],
"year": "2008"
},
{
"name": "Release Two",
"songs": [
"Song 1",
"Song 2",
"Song 3",
"Song 4",
"Song 5"
],
"year": "2010"
},
{
"name": "Release Three",
"songs": [
"Song 1",
"Song 2",
"Song 3",
"Song 4"
],
"year": "2011"
},
{
"name": "Release Four",
"songs": [
"Song 1",
"Song 2",
"Song 3",
"Song 4",
"Song 5"
],
"year": "2011"
}
]
My @Pipe according to the solution offered here:
@Pipe({name: 'KeysPipe'})
export class KeysPipe 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;
}
}
My @Component:
@Component({
selector: 'my-app',
template: `
<div class="releases-component">
Releases Component starts here!
<div *ngFor="let release of releases">
<h3>Name: {{release.name}}</h3>
<h3>Name: {{release.year}}</h3>
</div>
</div>
<ul>
<li *ngFor="let release.song of releases | keys">
{{release.song}}
</li>
</ul>
`,
})
Please, help understand what I am doing wrong.