2015-07-25 45 views
8

angolare 2: 2.0.0-alpha.31/tipografico 1.5Come eseguire l'operazione groupBy in Angular 2?

ho richiesto i dati da una query http.get

this.http.get('/data/players.json') 
        .toRx() 
        .map((res) => res.json()) 
        .subscribe((data) => { 
         this.players = data; 
        }); 

Questa interrogazione mi restituire questo oggetto JSON (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"} 
] 

Quindi vorrei visualizzare il giocatore raggruppato per squadra

teamA: player1,player2,player3 
teamB: player4,player5 

Come posso groupByteam su Angular2 (direttamente in @View?)?

UPDATE

ho visto che su angolare 1, questo potrebbe essere fatto nella vista utilizzando | groupBy:'propertyName' su ngFor. C'è qualcosa di simile su Angular 2?

risposta

0

è possibile utilizzare il filtro?

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) 
+0

Purtroppo, mi piacerebbe farlo in modo dinamico in una vista. Ho visto che su angular1, questo potrebbe essere fatto con: 'player in players | groupBy: 'team'', sto cercando qualcosa di simile. Grazie – plone1

+0

http://sobrepere.com/blog/2014/10/14/creating-groupby-filter-angularjs/ – tire0011

4
Non

so esattamente quale versione di Angular2 è stato introdotto, ma è possibile chiamare RX's GroupBy function. Non penso che sia necessaria la chiamata .toRx() nelle versioni più recenti.

Prima ti iscrivi aggiungere qualcosa di simile:

.map((res) => res.json()) 
.groupBy(
    x => x.team, 
    x => x 
);