Angular Router, kullanıcılarınızın uygulamanızda gezinmesine yardımcı olmak için kullanabileceğiniz güçlü bir eşleştirme stratejisini destekler. Bu eşleştirme stratejisi statik rotaları, parametreli değişken rotaları, joker rotaları ve daha fazlasını destekler. Ayrıca, URL'lerin daha karmaşık olduğu durumlar için kendi özel kalıp eşleştirmenizi oluşturun.
Bu eğitimde, Angular'ın UrlMatcher'ını kullanarak özel bir rota eşleştirici oluşturacaksınız.
Bu eşleştirici, URL'de bir Twitter kullanıcı adı arar.
Hedefler
Angular'ın UrlMatcher'ını kullanarak özel bir rota eşleştirici uygulayın.
Örnek bir uygulama oluşturma
Angular CLI kullanarak, angular-custom-route-match adlı yeni bir uygulama oluşturun. Varsayılan Angular uygulama çerçevesine ek olarak, bir profile bileşeni de oluşturacaksınız.
angular-custom-route-match adlı yeni bir Angular projesi oluşturun.
ng new angular-custom-route-matchWould you like to add Angular routing?sorusu geldiğindeYseçin.Which stylesheet format would you like to use?sorusu geldiğindeCSSseçin.Birkaç dakika sonra yeni proje
angular-custom-route-matchhazırdır.Terminalinizden
angular-custom-route-matchdizinine gidin.Bir profile bileşeni oluşturun.
ng generate component profileKod editörünüzde
profile.htmldosyasını bulun ve yer tutucu içeriği aşağıdaki HTML ile değiştirin.profile.html
<p>Hello {{ username() }}!</p>Kod editörünüzde
app.htmldosyasını bulun ve yer tutucu içeriği aşağıdaki HTML ile değiştirin.app.html
<h2>Routing with Custom Matching</h2> Navigate to <a routerLink="/@Angular">my profile</a> <router-outlet />
Uygulamanız için route'ları yapılandırma
Uygulama çerçeveniz hazır olduğunda, app.config.ts dosyanıza yönlendirme yetenekleri eklemeniz gerekir.
Bu işlemin bir parçası olarak, URL'de bir Twitter kullanıcı adı arayan özel bir URL eşleştirici oluşturacaksınız.
Bu kullanıcı adı, öncesinde gelen @ sembolü ile tanımlanır.
Kod editörünüzde
app.config.tsdosyanızı açın.Angular'ın
provideRoutervewithComponentInputBindingile uygulama rotaları için birimportifadesi ekleyin.import {provideRouter, withComponentInputBinding} from '@angular/router'; import {routes} from './app.routes';providers dizisinde bir
provideRouter(routes, withComponentInputBinding())ifadesi ekleyin.Aşağıdaki kodu uygulama rotalarına ekleyerek özel rota eşleştiriciyi tanımlayın.
app.routes.ts
{ matcher: (url) => { if (url.length === 1 && url[0].path.match(/^@[\w]+$/gm)) { return {consumed: url, posParams: {username: new UrlSegment(url[0].path.slice(1), {})}}; } return null; }, component: Profile, },
Bu özel eşleştirici, aşağıdaki görevleri yerine getiren bir fonksiyondur:
- Eşleştirici, dizinin yalnızca bir segment içerdiğini doğrular
- Eşleştirici, kullanıcı adı formatının eşleştiğinden emin olmak için bir düzenli ifade kullanır
- Eşleşme varsa, fonksiyon tüm URL'yi döndürür ve yolun bir alt dizesi olarak bir
usernamerota parametresi tanımlar - Eşleşme yoksa, fonksiyon null döndürür ve yönlendirici URL ile eşleşen diğer rotaları aramaya devam eder
HELPFUL: Özel bir URL eşleştirici, diğer herhangi bir rota tanımı gibi davranır. Alt rotaları veya tembel yüklenen rotaları, diğer herhangi bir rotada olduğu gibi tanımlayın.
Route parametrelerini okuma
Özel eşleştirici hazır olduğunda, artık profile bileşeninde rota parametresini bağlayabilirsiniz.
Kod editörünüzde profile.ts dosyanızı açın ve username parametresiyle eşleşen bir input oluşturun.
Daha önce provideRouter'da withComponentInputBinding özelliğini eklemiştik. Bu, Router'ın bilgileri doğrudan rota bileşenlerine bağlamasına olanak tanır.
username = input.required<string>();
Özel URL eşleştiricinizi test etme
Kodunuz hazır olduğunda, artık özel URL eşleştiricinizi test edebilirsiniz.
Bir terminal penceresinden
ng servekomutunu çalıştırın.ng serveBir tarayıcıda
http://localhost:4200adresini açın.Navigate to my profileyazan bir cümleden oluşan tek bir web sayfası görmelisiniz.my profile bağlantısına tıklayın.
Sayfada
Hello, Angular!yazan yeni bir cümle belirir.
Sonraki Adımlar
Angular Router ile kalıp eşleştirme, uygulamanızda dinamik URL'leriniz olduğunda size çok fazla esneklik sağlar. Angular Router hakkında daha fazla bilgi edinmek için aşağıdaki konulara bakın:
HELPFUL: Bu içerik, Brandon Roberts tarafından yazılan Custom Route Matching with the Angular Router makalesine dayanmaktadır.