Невозможно использовать функцию value.sort в моем pipe.ts - PullRequest
0 голосов
/ 28 января 2019

Я отображаю данные из серверного API через службу, и теперь я хочу отфильтровать отображаемые данные.Итак, я создал канал, но он выдает ошибку, что value.sort is not a function.Это потому, что мои данные - это объект, а не массив?Может кто-то помочь мне с этим?

Я воспроизвел проблему здесь Stackblitz

sort.pipe.ts

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

@Pipe({
 name: 'sort',
 pure: false
  })
 export class SortPipe implements PipeTransform {

transform(value: any[], criteria: SortCriteria): any[] {
console.log('Piped');
console.log(value);
if (!value || !criteria)
  return value;

let p: string = criteria.property;

let sortFn:(a: any, b: any) => any = (a, b) => {
  let value: number = 0;
  if (a[p] === undefined) value = -1;
  else if (b[p] === undefined) value = 1;
  else value = a[p] > b[p] ? 1 : (b[p] > a[p] ? -1 : 0);
  return criteria.descending ? (value * -1) : value;
};

value.sort(sortFn);
return value;
  }

  }

 export interface SortCriteria {
 property: string;
 descending?: boolean;
  }

1 Ответ

0 голосов
/ 28 января 2019

Вы получаете ошибку, потому что value - это Поведенческий объект в вашем коде.Вам нужно извлечь из него значение (которое в вашем случае является массивом), а затем вызвать sort для него.Поэтому измените код следующим образом, и он должен работать:

value.getValue().sort(sortFn);

...