2017-07-03 22 views
1

我還是Angular/JS的新手......我通過過濾管道顯示了一堆數據,現在我希望能夠切換數據的排序方式:升序或降序。我有一個完美的「orderBy」管道,但我現在必須對方向進行硬編碼,並且我希望它是動態的。我想通過兩個單選按鈕實現這一點,但是我無法抓取輸入值並將其插入到我的* ngFor指令中。抓取輸入值並將其插入* ngFor指令?

<input type="radio" value="+"> Ascending<br> 
<input type="radio" value="-"> Descending<br> 

我需要抓住「+」或「 - 」並在「recordStartDate」之前插入它。

<li (click)="showArtist(item);" 
    *ngFor="let item of artists | search: field1Filter | orderBy: 
    ['recordStartDate']"> 
</li> 

[ '- recordStartDate ']結果降序排列,並[' + recordStartDate'](或無符號在所有的)產生上升。

達到此目的的最佳方法是什麼?

謝謝!

編輯:

我在這裏使用這條管道:https://stackoverflow.com/a/35635370/8201772這裏有它的一個演示:http://fuelinteractive.github.io/fuel-ui/#/pipe/orderby。請注意,在演示中,有些選項可以通過「+」和「 - 」控制數據是按升序還是降序排序。我怎樣才能複製這些選擇功能?我會對原始答案發表評論,但我需要50+聲望才能這樣做。謝謝!

編輯二:

好了,我已經更新了兩個單選按鈕,如下圖所示:

<input type="radio" name="orderbydescending" [(ngModel)]="orderbydescending" value="['+recordStartDate']">Ascending<br> 
<input type="radio" name="orderbydescending" [(ngModel)]="orderbydescending" value="['-recordStartDate']">Descending 

並使用我的觀點如下:

*ngFor="let item of artists | search: field1Filter | orderBy : orderbydescending" 

然後我得到以下錯誤:http://imgur.com/a/KOxv5

如果我刪除「['」和「']」單選按鈕的值,那麼管道停止正常工作(並且我仍然得到相同的錯誤)。

任何想法?再一次,硬編碼這完美的作品。謝謝!

回答

1

我真的用一個布爾值來測試哪個方向來過濾

<input type="radio" [(ngModel)]="orderbydescending" name="orderbydescending" value="false">Ascending<br> 
<input type="radio" [(ngModel)]="orderbydescending" name="orderbydescending" value="true">Descending 
在你看來

然後:

<li (click)="showArtist(item);" *ngFor="let item of artists | search: field1Filter | orderBy : orderbydescending"> 
    {{ data goes here }} 
</li> 

那麼你的過濾器會接受orderbydescending值作爲參數:

export class OrderByPipe implements PipeTransform { 

    transform(value: any[], args?: any): any[] { 
     // args holds true if ordering by descending, otherwise, you are ordering ascending 
    } 
} 
+0

謝謝,比爾溫!這通常是完美的,但是,我似乎無法使用我正在使用的特定管道工作。我在這裏使用這個管道:https://stackoverflow.com/questions/32882013/angular-2-sort-and-filter/35635370#35635370 - 這裏有一個演示:http://fuelinteractive.github。 IO /燃料UI /#/管/的OrderBy。在演示中,查看選擇選項以及用戶如何通過控制「+」或「 - 」在升序和降序之間切換。任何想法如何工作? – Boosman

+1

當你瀏覽代碼時,你看到了什麼錯誤? – birwin

+0

看看我的**編輯兩**爲我的更新和產生的錯誤。謝謝!也許我正在犯一個非常簡單/愚蠢的錯誤? – Boosman