2017-03-09 18 views
1

我想为angular 2创建一个管道,使用它在我的html中正确使用它,但是每次使用它时array.sort都被当作属性读取。该错误是无法读取属性未定义“排序”这里是我管的代码Angular 2 - Pipesorting - 正确的语法

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

import { Player } from './player'; 

@Pipe({ 
    name: "arraysorting", 
    pure:false, 
}) 
export class LeaderboardSortPipe implements PipeTransform { 
    transform(array: Array<Player>, args: string): Array<Player> { 
    array.sort((a: Player, b: Player) => { 
     if (a[args] < b[args]) { 
     return -1; 
     } else if (a[args] > b[args]) { 
     return 1; 
     } else { 
     return 0; 
     } 
    }); 
    return array; 
    } 
} 

编辑: 下面是该

<ul *ngIf="type!='' && amount==0" class="leaderboard"> 
    <li *ngFor="let player of players | sort | slice:0; let i=index"> 
     <span class="badge">{{player.id}}</span>{{player.name}} 
     <span *ngIf="type=='ratio'" class="points">{{player[type].toFixed(2)}} %</span> 
     <span *ngIf="type!='ratio'" class="points">{{player[type]}}</span> 
    </li> 
</ul> 

的排序顺序我的HTML代码并不重要的权利现在的问题是,它不是在任何方向都整理

回答

1

只要确保当null作为值传递的管道不扔

transform(array: Array<Player>, args: string): Array<Player> { 
    if(!array) { 
     return null; 
    } 
    array.sort((a: Player, b: Player) => { 
+0

当然是。否则,你不会得到那个错误。 –

+0

请编辑你的问题,并在那里添加代码。评论中的代码是不可读的。你想如何分类他们? –