2015-07-25 22 views
8

góc 2: 2.0.0-alpha.31/nguyên cảo 1,5Làm thế nào để thực hiện thao tác groupBy trong Angular 2?

tôi yêu cầu dữ liệu từ một truy vấn http.get

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

Truy vấn này trả lại cho tôi đối tượng JSON này (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"} 
] 

Sau đó, tôi muốn hiển thị trình phát theo nhóm

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

Làm cách nào tôi có thể groupByteam trên Angular2 (trực tiếp vào @View?)?

CẬP NHẬT

tôi thấy rằng trên góc 1, điều này có thể được thực hiện trong giao diện sử dụng | groupBy:'propertyName' trên ngFor. Có cái gì như thế này trên Angular 2?

Trả lời

0

bạn có thể sử dụng bộ lọc không?

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

Thật không may, tôi muốn làm điều đó tự động vào một cái nhìn. Tôi thấy rằng trên angular1, điều này có thể được thực hiện với: 'người chơi trong người chơi | groupBy: 'team'', tôi đang tìm kiếm một cái gì đó tương tự. Cảm ơn – plone1

+0

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

4

Không chắc chắn phiên bản Angular2 đã được giới thiệu nhưng bạn có thể gọi RX's GroupBy function. Tôi không nghĩ bạn cần cuộc gọi .toRx() trong các phiên bản gần đây hơn.

Trước khi bạn đăng ký thêm một cái gì đó như thế này:

.map((res) => res.json()) 
.groupBy(
    x => x.team, 
    x => x 
); 
Các vấn đề liên quan