Ich habe ein Problem, meinen Filter richtig zu synchronisieren. I subscribe
bis queryParams
von ActivatedRoute
. Dort bekomme ich die query
und meine drei Filterkriterien.Änderung des Abfrageparam nicht erkannt
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
});
}
Wann immer ich auf einem Filter klicken, colour:blue
kann sagen, rufe ich meine reloadPage()
und gebe die neuen queryparams
und auf die gleiche Seite navigieren nur mit den neuen queryparams
.
private reloadPage(): void {
const queryParams: NavigationExtras = {};
queryParams['query'] = this._query;
//Bring filter arrays into shape for queryParams
this.prepareFiltersForParams(queryParams);
this.router.navigate([], {
queryParams,
});
Das funktioniert alles in Ordnung. Jetzt haben wir colour:blue
ausgewählt, aber ich möchte auch colour:orange
. Ich werde zu der queryParams['colour']
hinzugefügt, die dann blue
und orange
enthält. Aber aus irgendeinem Grund orange
ist Nether hinzugefügt, um die URL, auch in queryParams['colour']
. Wenn ich jetzt einen Filter eines anderen Kriteriums hinzufüge, sagen wir height
, funktioniert alles gut und glatt und der height
Filter wird hinzugefügt und auch der colour:orange
.
Es scheint mir, dass die change detection
der this.route.queryParams.subscribe
gerade nicht die Änderung der queryParams['colour']
abgreift und deshalb gerade nicht aktualisiert.
Ich öffnete auch eine GH-Ausgabe angular#17609.
Kannst du einen Plünderer dafür machen? Sie können nur einen Wert in "color" haben, aber wie haben Sie zwei Werte hinzugefügt? –
Ich kann versuchen, es in Plunker zu bekommen. In GH habe ich das Problem etwas tiefer beschrieben: https://github.com/angular/angular/issues/17609 – tschaka1904
_Sie können nur einen Wert in Farbe haben, aber wie haben Sie zwei Werte_ hinzugefügt? –