Powrót do bloga

Używanie parametrów zapytania z Angular Router

Używanie parametrów zapytania z Angular Router

Wprowadzenie

Podczas budowania aplikacji mogą wystąpić scenariusze, w których chcemy przekazać pewne argumenty lub parametry opisujące zachowanie trasy. W Angular, są one nazywane parametrami zapytania, i są one opcjonalne. Parametrów zapytania nie należy mylić ze zwykłymi trasy parametrami, które są parametrami wymaganymi i są powiązane tylko z jedną trasą.

Aby wyjaśnić różnicę między parametrami trasy a parametrami zapytania, wyobraź sobie, że budujesz aplikację przechowującą produkty. Możesz mieć trasę, która otwiera konkretny produkt za pomocą product_id. Możesz również określić parametr zapytania: read_only. Gdy read_only jest ustawione na true, użytkownik może tylko przeglądać rekord, podczas gdy gdy read_only wynosi false, użytkownik może również edytować rekord. W ten sposób, korzystając tylko z jednej trasy, można obsłużyć zarówno przypadek edycji, jak i podglądu. Tutaj product_id to parametr trasy a read_only który jest opcjonalny, to parametr zapytania parameter.

Wymagania wstępne

Aby w pełni zrozumieć ten artykuł, wymagana jest znajomość budowania aplikacji przy użyciu Angulara. Pomocne będzie również doświadczenie z Angular Router, RouterLink i ActivatedRoute.

Przekazywanie parametrów zapytania za pomocą Router.navigate

Jeśli używasz Router.navigate do nawigacji między trasami, użyj queryParams do przesłania parametrów zapytania.

W powyższym przykładzie, jeśli chcemy, aby odwiedzający zobaczyli listę produktów posortowaną według popularności, użyjemy poniższego kodu:

Po użyciu tego kodu adres URL będzie wyglądał następująco:

Mogą jednak wystąpić scenariusze, w których podczas nawigacji musimy przekazać wiele parametrów. Na przykład, jeśli chcemy posortować produkty według popularności, a także według ceny, możemy użyć poniższego kodu:

Tym razem adres URL będzie wyglądał następująco:

To podsumowuje, jak ustawiać parametry zapytania za pomocą queryParams.

Zapobieganie utracie parametrów zapytania przy użyciu queryParamsHandling

Podczas nawigacji między trasami parametry mają tendencję do gubienia się. Przypuśćmy, że jeśli przekażemy argument arg0 nie zostanie on przekazany podczas kolejnego routingu. Możemy zapisać parametry za pomocą queryParamsHandling i ustawiając wartość na preserve lub merge.

W powyższym przykładzie załóżmy, że chcemy skierować odwiedzających na stronę marek ze strony produktu z parametrem trasy { order: 'popular' }, zachowując parametry trasy. Aby to zrobić, możemy użyć queryParamsHandling i ustawić go na preserve :

Spowoduje to, że adres URL będzie wyglądał następująco:

Następnie załóżmy, że chcemy zachować parametr zapytania poprzedniej trasy { order: 'popular' }  przy jednoczesnym dodaniu nowych parametrów { price: 'high-to-low' }. Możemy ustawić queryParamsHandling na merge:

Z powyższym kodem adres URL zmieni się na:

Na tym kończymy zachowywanie parametrów zapytania przy użyciu queryParamsHandling w celu zachowania lub scalenia.

Przekazywanie parametrów zapytania za pomocą RouterLink

Biorąc pod uwagę nasz poprzedni link, jeśli chcemy użyć dyrektywy RouterLink do nawigacji, będziemy musieli przekazać parametry zapytania za pomocą queryParams w następujący sposób:

Zauważ, jak przekazujemy obiekt do queryParams za pomocą wiązania jednokierunkowego. Możemy również przekazać cały obiekt jako queryParams .

Ponadto, jeśli chcemy przenieść te parametry zapytania do kolejnych nawigacji, możemy użyć opcji queryParamsHandling. Możliwe opcje dla queryParamsHandling to merge  oraz preserve:

W tym miejscu zobaczyliśmy, jak przekazywać queryParams oraz jak obsługiwać parametry za pomocą queryParamsHandling w RouterLink.

Odczytywanie wartości parametrów zapytania

Do tej pory nauczyliśmy się, jak przekazywać parametry zapytania w ścieżce. Parametry te były opcjonalne i służyły do przekazywania informacji do strony docelowej. Wysyłanie parametrów to jedna część, ale konieczne jest również odczytanie ich z adresu URL i użycie ich.

W Angularze odczytujemy parametry zapytania ścieżki za pomocą klasy ActivatedRoute. Klasa ActivatedRoute posiada obserwowalną właściwość o nazwie queryParams służącą do ujawniania parametrów bieżącego adresu URL.

Załóżmy, że mamy do czynienia z następującym adresem URL:

Aby uzyskać dostęp do parametru zapytania order w kodzie, używamy poniższego kodu:

Tutaj w konsoli zobaczymy wartość parametru zapytania order o wartości popular wydrukowane. Jeśli mamy wiele parametrów zapytania, możemy użyć queryParamMap właściwości, która zwraca obiekt observable paramsMap .

Jeśli mamy adres URL z wieloma parametrami zapytania, takimi jak:

Możemy uzyskać dostęp do tych parametrów zapytania za pomocą poniższego kodu:

Używając operatora spread dla obiektów w tym miejscu, otrzymujemy poniższy wynik:

Na koniec powinieneś już rozumieć, jak uzyskać dostęp do parametrów zapytania z wynikowych tras.

Podsumowanie

W tym samouczku przyjrzeliśmy się różnicy między parametrami zapytania a parametrami trasy. Przyjrzeliśmy się również temu, jak przekazywać argumenty między trasami jako parametry zapytania, a także jak pobierać je z powrotem na stronie za pomocą queryParams oraz queryParamsHandling z Router.navigate oraz RouterLink. Dowiedzieliśmy się również, jak obsługiwać queryParams oraz queryParamMap z ActivatedRoute.

Angular wymaga JavaScriptu u podstaw. Jeśli chcesz poszerzyć swoją wiedzę na temat JavaScriptu, możesz zapoznać się z następującymi blogami:

Miłego programowania!

author

Shreyas Patil

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.