2017-03-29 5 views
1

Gibt es eine saubere Möglichkeit, die aktuellen optionalen queryParams mit einem zusätzlichen optionalen queryParam für einen Link in der Vorlage zusammenzuführen?Angular RouterLink queryParamsHandling für optionale Parameter

Aktuelle url: /search;brand=Trek

Wunsch goto Link: /search;brand=Trek;start=1 (startCount wird inkrementiert)

Ich weiß Angular die Fähigkeit unterstützt normale queryParams (https://angular.io/docs/ts/latest/api/router/index/RouterLink-directive.html) zu fusionieren, aber ich glaube es nicht arbeitet mit optional queryParams.

Das ist, warum dies nicht funktioniert:

<a class="nav-btn" 
    queryParamsHandling="merge" 
    [routerLink]="[ { start: startCount+1 } ]"> 
    Next Page 
</a> 

Irgendwelche Vorschläge?

+0

Versuchen Hinzufügen {preserveQueryParams: true} – vcs

+0

Dies ist veraltet. –

Antwort

0

Versuchen
<a class="nav-btn" 
    queryParamsHandling="preserve" <--- instead of 'merge' 
    [routerLink]="[ { start: startCount+1 } ]"> 
    Next Page 
</a> 
+0

Nein, schien nicht zu funktionieren. Es löschte alle vorherigen Params und fügte den neuen Startparameter hinzu. –

1

Ich glaube nicht, dass dies mit der neuesten Version von Angular möglich ist, also hier ist meine Umgehungslösung:

abonnieren und die params sparen:

ngOnInit() { 
    this.route.params.subscribe((params: Params) => { 
    for(let param in params){ 
     if(params.hasOwnProperty(param)){ 
      console.log('param:', param); 
      this.currentParams[param] = params[param]; 
     } 
    } 
    }); 
} 

Fügen Sie dem currentParam-Objekt dann zusätzliche optionale Parameter hinzu:

this.currentParams.start = this.startCount+1; 

und Re-Ebene mit allen params auf Ihrer Route:

this.router.navigate([ 'search', this.currentParams ]);