Как вы сортируете Observable <Item []> в Angular 6 с помощью rxjs 6? - PullRequest
0 голосов
/ 10 мая 2018

Я просто хочу отсортировать данные по наблюдаемому типу моего класса 'Категория'.Итак, Observable Я хочу отсортировать.

Так что я обновился до Angular6 и rxjs6 вместе с ним.Одна проблема, которая, вероятно, является простым Typescript, которую я знаю, заключается в том, как мне просто выполнить операцию сортировки, например:

sort((x,y) => x.description < y.description ? -1 : 1)

Внутри нового Angular6?Я делал это в 5

var response = this.http.get<Category[]>(this.endpoint);
        .map((result: Response) => this.alphabetize(result));


alphabetize = (result: Response) => this.Categories = result.json()
.sort((x,y) => x.description < y.description ? -1 : 1)

И все работало нормально.Теперь в HttpCLIENTModule и HttpClient, которые Angular хочет, чтобы вы использовали, это проще:

var data = this.http.get<Category[]>(this.endpoint);

Я просто помещаю магию <(объект)> перед моей конечной точкой, и она делает это для меня.Здорово.Но я не вижу, как вы можете легко проникнуть внутрь объекта с помощью Source, Pipe, from, of.Я знаю, что это, вероятно, что-то простое, я просто не знаю синтаксис для.

1 Ответ

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

Это:

this.http.get<Category[]>(this.endpoint).pipe(
  map(results => results.sort(...))
);

Или, поскольку sort изменяет существующий массив, более семантически корректно предоставлять побочные эффекты в do / tap:

this.http.get<Category[]>(this.endpoint).pipe(
  tap(results => {
    results.sort()
  })
);
...