基本的には配列のビューを制限するトグルスタイルのボタン/リンク用の素敵なRxJSパターンを見つけようとしています。2つの値の間のトグルを初期化するためのRxJSパターン
2つの値を切り替えます.1つは静的で、もう1つはObservableから来ます(実際にはHTTP要求の結果はthis.itemsArray$
です)。
TS
this.toggleClicks$ = Observable.fromEvent(this.viewAllToggle.nativeElement, 'click')
.scan(prev => !prev, false);
this.itemsArray$ = Observable.of([ /* array of any */ ]);
this.viewLimit$ = this.itemsArray$
.withLatestFrom(this.toggleClicks$, (items, viewAll) => {
return viewAll
? { nowLimit: items.length, otherLimit: 5 }
: { nowLimit: 5, otherLimit: items.length };
})
.share();
HTML
Showing <span>{{(viewLimit$ | async)?.nowLimit}}</span>.
<span #viewAllToggle>Show {{(viewLimit$ | async)?.otherLimit}}</span>
それは基本的に動作しますが、明らかな問題は、最初のクリックまで取り込まれていない初期値、です。追加しても.startWith()
this.itemsArray$ = Observable.of([ /* array of any */ ]);
それは役に立ちません。
私には何が欠けていますか?
あなたは 'this.itemsArray $'と 'this.itemsArray'(' $ 'なし)を書きました。 – Fabricio
それは単純なタイプミスです – user776686