сортировка по нескольким таблицам угловая 4 - PullRequest
0 голосов
/ 04 мая 2018

Я бы хотел иметь сортировку по нескольким таблицам, находящимся на одной странице. Я пытался следовать этому пакету. https://github.com/VadimDez/ngx-order-pipe

Когда я сортирую таблицу 1, таблица 2 также сортируется. Как реализовать это для нескольких таблиц по отдельности.

order: any;
reverse: boolean = false;
  setOrder(value: string) {
    if (this.order === value) {
      console.log(this.order)
      this.reverse = !this.reverse;
    }
    this.order = value;
  }


 <table>
             <thead>
                  <tr>
                    <th (click)="setOrder('Data.name')">Name</th>
                    <th (click)="setOrder('Data.age')">Age</th>
                  </tr>
                </thead>
                <tbody>
                  <tr *ngFor="let Data of collection1 | orderBy: order:reverse:'case-insensitive'">
                    <td class="text-truncate">{{Data.name}}</td>
                    <td class="text-truncate">{{Data.age}}</td>
                  </tr>
                </tbody>
              </table>

  <table>
            <thead>
              <tr>
                <th (click)="setOrder('PersonData.id')">Id</th>
                <th (click)="setOrder('PersonData.sport')">Sport</th>
              </tr>
            </thead>
            <tbody>
              <tr *ngFor="let PersonData of collection2 | orderBy: order:reverse:'case-insensitive'">
                <td class="text-truncate">{{PersonData.id}}</td>
                <td class="text-truncate">{{PersonData.sport}}</td>
              </tr>
            </tbody>
          </table>

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Каким бы ни был код, которым вы делитесь, у него всего одна таблица.

Вам не нужно использовать какую-либо стороннюю библиотеку, но создайте свой собственный фильтр сортировки, подобный этому

sort(property){
    this.isDesc = !this.isDesc; //change the direction    
    this.column = property;
    let direction = this.isDesc ? 1 : -1;

    this.records.sort(function(a, b){
        if(a[property] < b[property]){
            return -1 * direction;
        }
        else if( a[property] > b[property]){
            return 1 * direction;
        }
        else{
            return 0;
        }
    });
};

См. Полный пост подробно

0 голосов
/ 04 мая 2018

Я не знаком с пакетом, который вы используете, но наилучший способ достижения вашей цели действительно зависит от вашего варианта использования. Одним из способов является рефакторинг вашего кода таким образом, чтобы каждая таблица была его собственным компонентом и выполняла свою собственную сортировку. Таким образом, сортировка данных не разделяется между таблицами.

...