Reputation: 676
Angular 2 : 2.0.0-alpha.31 / Typescript 1.5
I requested data from a http.get
query
this.http.get('/data/players.json')
.toRx()
.map((res) => res.json())
.subscribe((data) => {
this.players = data;
});
This query return me this Json object (this.players
)
[
{"team":"teamA","name":"player1","age":"1"},
{"team":"teamA","name":"player2","age":"1"},
{"team":"teamA","name":"player3","age":"1"},
{"team":"teamB","name":"player4","age":"1"},
{"team":"teamB","name":"player5","age":"1"}
]
Then I would like to display player grouped by team
teamA: player1,player2,player3
teamB: player4,player5
How can I groupBy
team
on Angular2 (directly into the @View?) ?
UPDATE
I saw that on Angular 1, this could be done in the view using | groupBy:'propertyName'
on ngFor. Is there something like this on Angular 2 ?
Upvotes: 8
Views: 7198
Reputation: 1639
Not sure exactly what version of Angular2 it was introduced but you can call RX's GroupBy function. I don't think you need the .toRx()
call in more recent versions either.
Before you subscribe add something like this:
.map((res) => res.json())
.groupBy(
x => x.team,
x => x
);
Upvotes: 4
Reputation: 1058
can you use filter?
var test = [
{"team":"teamA","name":"player1","age":"1"},
{"team":"teamA","name":"player2","age":"1"},
{"team":"teamA","name":"player3","age":"1"},
{"team":"teamB","name":"player4","age":"1"},
{"team":"teamB","name":"player5","age":"1"}
];
function FilterByTeam(obj){
console.log(obj);
return obj.team === "teamA";
}
var teamA = test.filter(FilterByTeam);
console.log(teamA)
Upvotes: 0