2016-08-31 22 views
15

Mam wymóg ustawienia adresu URL z parametrami zapytania, takimi jak /Questions?id=1234&pageid=0. Próbowałem to zrobić przez router.Navigate['/Questions?id=1234&pageid=0'], ale bez powodzenia.Jak ustawić parametry zapytania na url Angular2?

Po wyświetleniu przeglądarki nawigacji wygląda ona jak /Questions%3Fid%3D1234%26pageid%3D0.

Próbowałem również z ustawieniem routerLink="/Questions?id=1234&pageid=0", ale ten sam wynik.

Proszę zaproponować jakieś rozwiązanie, aby zrobić it.I używam RC5 dla angular2.

+1

Sprawdź kątową dokumentację trasy z params zapytań: https://angular.io/docs/ts/latest/guide/router.html#! # query-parameters – ranakrunal9

Odpowiedz

10

Znalazłem jedno rozwiązanie, dając Router-link i query-parametry oddzielić, jak poniżej:

<a [routerLink]="['/Questions']" [queryParams]="{id:1234,page:1}"></a>

To działa dobrze dla mnie.

+1

Pozdrawiam! Szukałem tak długo. [Dokumenty] (https://angular.io/docs/ts/latest/guide/router.html#!#query-parameters) wydaje się być błędny? Ale ofc - poprawny sposób ukryty w [cheatsheet] (https://angular.io/docs/ts/latest/guide/cheatsheet.html)! – Leo

5

można przekazać je jako elementy w routerze polecenia tablica:

[routerLink]="['/Questions'] [queryParams]="{id:1234, pageid:0}} ]" 

Zobacz również https://angular.io/docs/ts/latest/guide/router.html#!#query-parameters

+1

Używam go, ale daje mi adres URL **/Questions; queryParams =% 5Bobject% 20Object% 5D **. –

+0

Dla rutera głównego parametry opcjonalne są reprezentowane w teście kwerendy, dla ruterów podrzędnych są one dodawane jako parametry macierzy (co pokazano) –

+0

Tak, masz rację, to jest dla trasy podrzędnej. Czy istnieje jakieś rozwiązanie do wyświetlania parametrów zapytań dla ścieżek potomnych, a nie tego parametru macierzy? –

16

można przekazać je jako elementu w routerze, ale poza tablicy poleceń:

[routerLink]="["/Questions"], {queryParams: {id:1234, pageid:0}}"

ten generuje co chcesz: /Questions?id=1234&pageid=0

Albo można go używać programmaticaly:

this.router.navigate(['/Questions'], { queryParams: {id:1234, pageid:0} })

z routerem będącym instancją @angular/router „s Router

0

Musisz zaktualizować router.navigate

this.router.navigate(['/Quetions', {id: 1234, pageid: 0}]);