0
Observable
を使用して2つの項目リストをレンダリングしようとしています。 1つは完全な結果を示し、もう1つはフィルタリングされた結果を示します。Filter FormControl値の変更に基づく観測可能な配列
私は、このコンポーネントを持っている:
@Component({
template: `
<div *ngFor="let item of items | async">
<span>{{item.name}}</span>
</div>
<input [formControl]="filterControl" />
<div *ngFor="let item of filteredItems | async">
<span>{{item.name}}</span>
</div>
`
})
export class TestComponent implements OnInit {
private filterControl = new FormControl();
private items: Observable<Item[]>;
private filteredItems: Observable<Item[]>;
ngOnInit() {
this.items = this.dataService.get("items");
this.filteredItems = this.filterControl.valueChanges
.debounceTime(300)
.distinctUntilChanged()
.combineLatest(this.items, (filterValue, items) => {
return items.filter((item: any) => item.name.toLowerCase().indexOf(filterValue.toLowerCase()) !== -1);
});
}
}
コードが唯一のhttpリクエストではなく、良いです入力されたフィルタ文字、1つずつ送信します。しかし、問題は、filterControl
が最初の値を出力するまで(input
に何かを入力すると)フィルタリングされた項目が表示されないということです。
デフォルト値を設定する方法、またはこのような問題を解決するより良い方法はありますか?
準備ができていることを確認しますが、ありがとうを!それは簡単でした:)沢山の新しいことを学び、正しい情報を見つけるのは簡単ではありません。 – Joel
ああああ。 rxjsは素晴らしい旅です。そして、それに投資する価値があります。より多くのことを学ぶほど、より洗練された、保守可能で効率的なコードになります – Meir