observableからダッシュボードのリストを表示するためのコンポーネントがあります。ユーザーはこのリストで検索する機能を必要としますが、小さいサイズのためにこのクライアント側を好むことになります。observableを使ってobservableをフィルタリングする方法
この作業を取得するために私は次のコードを使用した結果が観察セットアップするコンポーネント
@Input() dashboards: Observable<Dashboard[]>; // dashboards
term = new Subject<string>(); // search term
results: Observable<Dashboard[]>; // actual dashboard to display
に3つの観測を追加しました。私は、負荷何で
<input
[disabled]="(dashboards | async)?.length < 1"
(keyup)="term.next($event.target.value)"
type="search"
>
<ul>
<li *ngFor="let dashboard of (results | async)">
{{dashboard.name}}
</li>
</ul>
次したテンプレートで
ngOnInit(): void {
this.results = this
.term
.distinctUntilChanged()
.share()
.switchMap(term => {
return this.getDashboards(term);
})
.share();
}
private getDashboards(term) {
return this.dashboards
.map((dashboards: Dashboard[]) => {
return dashboards.filter(
this.getFilter(term)
);
});
}
private getFilter(term) {
term = term.toLowerCase();
return (dashboard: Dashboard) => {
// filter logic
};
}
を示しているが、リストを入力するときに表示され、実際にフィルタリングされます。
私の質問は、これが行く方法か、この方法ですか、それが正しい方法であれば、どのようにしてデータがロードされていることを確認できますか?
をドロップすることができます。 –
どういう意味ですか?私はダッシュボードと結果を見て、単純なダンプを持っています。ダッシュボードには結果が空の状態でダッシュボードに最初の状態が表示されます。私が入力を開始するまで、結果は情報を持ち始めます – MKroeders