フィルタを正しく同期させるために問題があります。 I subscribe
〜queryParams
はActivatedRoute
である。そこに私はquery
と私の3つのフィルタ基準を取得します。クエリアパラムの変化が検出されない
reloadPage()
を呼び出して、新しい
queryparams
を与え、ちょうど新しい
queryparams
と同じページに移動し、
colour:blue
を言うことができます
ngOnInit() {
this.route
.queryParams
.subscribe(queryParams => {
this._query = queryParams['query'];
this._heightFilter = queryParams['height'];
this._colourFilter = queryParams['colour'];
this._weightFilter = queryParams['weight'];
// Do some request to WS to get the new data
});
}
。
private reloadPage(): void {
const queryParams: NavigationExtras = {};
queryParams['query'] = this._query;
//Bring filter arrays into shape for queryParams
this.prepareFiltersForParams(queryParams);
this.router.navigate([], {
queryParams,
});
これはすべて問題なく動作します。今私たちはcolour:blue
を選択しましたが、私はまたcolour:orange
が欲しいです。私はとorange
を含むqueryParams['colour']
に追加されます。しかし何らかの理由でorange
がURLに追加されていても、それはqueryParams['colour']
で終了します。別の条件のフィルタを追加すると、height
と言うと、すべてがうまく機能し、height
フィルタが追加され、colour:orange
も追加されます。
this.route.queryParams.subscribe
のchange detection
は、queryParams['colour']
の変更を受け取っておらず、したがって更新していないようです。
また、GHの問題angular#17609も開設しました。
あなたはこれのためにプランナーをつけることができますか? 'color'には1つの値しか指定できませんが、どのように2つの値を追加しましたか? –
私はそれをプランナーに入れようとすることができます。 GHでは、少し深く説明しています:https://github.com/angular/angular/issues/17609 – tschaka1904
_色は1つだけですが、2つの値をどのように追加しましたか? –