0
:Observable.mergeでどのような観測値が変更されたかを調べる方法は?あなたは、私は読みやすさと明確にするために簡略化している私のコードを見ることができます下
connect(): Observable<Customer[]> {
const displayDataChanges = [
this._customerDatabase.dataChange,
this._filterChange,
this._sort.mdSortChange,
this._paginator.page
];
return Observable.merge(...displayDataChanges).map(() => {
let data = this._customerDatabase.data.slice();
data = this.getFilteredData(data);
data = this.getSortedData(data);
const startIndex = this._paginator.pageIndex * this._paginator.pageSize;
return data.splice(startIndex, this._paginator.pageSize);
});
}
この方法では、お客様の観測配列を返します。
は、一部は以下の観測の配列を定義します。
const displayDataChanges = [
this._customerDatabase.dataChange,
this._filterChange,
this._sort.mdSortChange,
this._paginator.page
];
私は顧客の私の配列が変わることを期待し、これらのうちの1つがデータを発するたびに。 (データをロードするとき、フィルタが変更されたとき、別のソートメカニズムを選択してページを変更したとき)
次に、これらのすべてを一緒にマージして、戻ってきた。ご覧のように、実際の観測データがデータをどのように放出したかを区別しないため、それほどパフォーマンスは良くありません。
どのように観測値を変更しましたか? (以下擬似コード)
return Observable.merge(...displayDataChanges).map(() => {
**[ALWAYS]**
let data = this._customerDatabase.data.slice();
**[IF MY SORTING HAS CHANGED]**
data = this.getSortedData(data); /* After which i will change the dataSet */
**[IF MY FILTER HAS CHANGED]**
data = this.getFilteredData(data);
**[ALWAYS]**
const startIndex = this._paginator.pageIndex * this._paginator.pageSize;
return data.splice(startIndex, this._paginator.pageSize);
});
こんにちはギヨーム、答えてくれてありがとう!私はそれを試みましたが、Observableの中でコードを実行しているようには見えませんか? –
それはマージしますが、それは私の問題でした;) –
それぞれの 'displayDataChanges'は少なくとも1つの値を出すべきです。あなたはページ、フィルタ、ソートを変更してこれが機能しているかどうか確認できますか? –