web-dev-qa-db-ja.com

Angular 6とrxjs 6でObservable <Item []>をどのようにソートしますか?

クラスタイプ「カテゴリ」のオブザーバブルでデータを並べ替えたいだけです。 Observable <Category []>並べ替えたい。

そこで、Angular6とrxjs6にアップグレードしました。おそらく私が知っている単純なTypeScriptの問題の1つは、次のような「ソート」操作をどのように行うかです。

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);

エンドポイントの前に魔法の<(object)>を置くだけで、自動的に処理されます。クール。しかし、Source、Pipe、from、ofを使用してオブジェクトから簡単にソートする方法はわかりません。構文がわからないだけのシンプルなものだと思います。

10
djangojazz

それは:

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()
  })
);
11
Estus Flask