Angular 5 Anwendung verfügt über einen Datenservice, der Produkte in der angegebenen category
zurückgibt und es gibt Paginierung. Kategorie wird in Routen als Parameter angegeben. Paginierung ist und Abfrageparameter. Url sieht so aus: /category?page=2
. (Kategorie ist eine Variable)Angular Abonnieren von Route und Route Parameter
Issue: die Komponente sowohl queryParams
und paramMap
abonniert ist. Wenn nur einer verwendet wird, ist es in Ordnung, aber wenn man von '/ category? Page = 2' nach '/ anotherCategory' triggert, werden beide Daten doppelt gezogen (und abhängig davon, welche beobachtbaren Daten zuerst zurückgegeben werden, führt dies zu unerwünschten Ergebnissen) . Die Verwendung von snapshot
funktioniert auch in diesem Fall nicht.
Ich konnte keine Best Practice finden, um dies zu lösen.
@Component({..}}
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.queryParams.subscribe((params: Params) => {
this.currentPage = params['page'];
this.getData(this.category, this.currentPage);
});
this.route.paramMap.subscribe ((params: Params) => {
this.category = params.get('categoryName');
this.getData(this.category, this.currentPage);
});
}
Anmerkung: der Code leicht modifiziert wird, und die Einfachheit halben gestrippt.
Was passiert, wenn Sie nur die paramsMap bekommen? – Gary
@Gary, dann habe ich nur die categoryName, nicht die? Page = 2 – Robert
Ah habe deinen Punkt. – Gary