Aşağıdaki bölümler bazı temel yönlendirici kavramlarını ve terminolojisini vurgular.
Router Olayları
Her navigasyon sırasında Router, Router.events özelliği aracılığıyla navigasyon olayları yayınlar.
Bu olaylar aşağıdaki tabloda gösterilmektedir.
| Yönlendirici olayı | Ayrıntılar |
|---|---|
NavigationStart |
Navigasyon başladığında tetiklenir. |
RouteConfigLoadStart |
Router bir rota yapılandırmasını tembel yüklemeden önce tetiklenir. |
RouteConfigLoadEnd |
Bir rota tembel yüklendikten sonra tetiklenir. |
RoutesRecognized |
Router URL'yi ayrıştırdığında ve rotalar tanındığında tetiklenir. |
GuardsCheckStart |
Router yönlendirmenin Koruyucu aşamasını başlattığında tetiklenir. |
ChildActivationStart |
Router bir rotanın alt rotalarını etkinleştirmeye başladığında tetiklenir. |
ActivationStart |
Router bir rotayı etkinleştirmeye başladığında tetiklenir. |
GuardsCheckEnd |
Router yönlendirmenin Koruyucu aşamasını başarıyla bitirdiğinde tetiklenir. |
ResolveStart |
Router yönlendirmenin Çözümleme aşamasını başlattığında tetiklenir. |
ResolveEnd |
Router yönlendirmenin Çözümleme aşamasını başarıyla bitirdiğinde tetiklenir. |
ChildActivationEnd |
Router bir rotanın alt rotalarını etkinleştirmeyi bitirdiğinde tetiklenir. |
ActivationEnd |
Router bir rotayı etkinleştirmeyi bitirdiğinde tetiklenir. |
NavigationEnd |
Navigasyon başarıyla sona erdiğinde tetiklenir. |
NavigationCancel |
Navigasyon iptal edildiğinde tetiklenir. Bu, bir Rota Koruyucusu navigasyon sırasında false döndürdüğünde veya UrlTree veya RedirectCommand döndürerek yönlendirdiğinde olabilir. |
NavigationError |
Beklenmeyen bir hata nedeniyle navigasyon başarısız olduğunda tetiklenir. |
Scroll |
Bir kaydırma olayını temsil eder. |
withDebugTracing özelliğini etkinleştirdiğinizde, Angular bu olayları konsola kaydeder.
Router Terminolojisi
İşte temel Router terimleri ve anlamları:
| Yönlendirici bölümü | Ayrıntılar |
|---|---|
Router |
Aktif URL için uygulama bileşenini görüntüler. Bir bileşenden diğerine navigasyonu yönetir. |
provideRouter |
Uygulama görünümleri arasında navigasyon için gerekli servis sağlayıcılarını sunar. |
RouterModule |
Uygulama görünümleri arasında navigasyon için gerekli servis sağlayıcılarını ve direktifleri sunan ayrı bir NgModule. |
Routes |
Her biri bir URL yolunu bir bileşene eşleyen Route dizisi tanımlar. |
Route |
Yönlendiricinin bir URL kalıbına göre bir bileşene nasıl navigasyon yapması gerektiğini tanımlar. Çoğu rota bir yol ve bir bileşen türünden oluşur. |
RouterOutlet |
Yönlendiricinin bir görünümü nerede göstereceğini işaretleyen direktif (<router-outlet>). |
RouterLink |
Tıklanabilir bir HTML öğesini bir rotaya bağlama direktifi. Bir dize veya bağlantı parametreleri dizisine bağlı routerLink direktifine sahip bir öğeye tıklamak bir navigasyon tetikler. |
RouterLinkActive |
Öğe üzerinde veya içinde bulunan ilişkili routerLink aktif/inaktif olduğunda bir HTML öğesine sınıf ekleme/kaldırma direktifi. Daha iyi erişilebilirlik için aktif bir bağlantının aria-current değerini de ayarlayabilir. |
ActivatedRoute |
Rota parametreleri, statik veriler, çözümlenmiş veriler, global sorgu parametreleri ve global fragment gibi rotaya özgü bilgileri içeren, her rota bileşenine sağlanan bir servis. |
RouterState |
Rota ağacını dolaşmak için kolaylık yöntemleriyle birlikte, şu anda etkinleştirilen rotaların bir ağacını içeren yönlendiricinin geçerli durumu. |
| Bağlantı parametreleri dizisi | Yönlendiricinin bir yönlendirme talimatı olarak yorumladığı bir dizi. Bu diziyi bir RouterLink'e bağlayabilir veya Router.navigate yöntemine argüman olarak aktarabilirsiniz. |
| Yönlendirme bileşeni | Yönlendirici navigasyonlarına göre görünümleri görüntüleyen RouterOutlet'e sahip bir Angular bileşeni. |
<base href>
Yönlendirici, navigasyon için tarayıcının history.pushState özelliğini kullanır.
pushState, uygulama içi URL yollarını özelleştirmenize olanak tanır; örneğin, localhost:4200/crisis-center.
Uygulama içi URL'ler sunucu URL'lerinden ayırt edilemez olabilir.
Modern HTML5 tarayıcıları pushState'i destekleyen ilk tarayıcılardı, bu yüzden birçok kişi bu URL'lere "HTML5 stili" URL'ler der.
HELPFUL: HTML5 stili navigasyon, yönlendiricinin varsayılanıdır.
LocationStrategy ve tarayıcı URL stilleri bölümünde, HTML5 stilinin neden tercih edildiğini, davranışının nasıl ayarlanacağını ve gerekirse eski hash (#) stiline nasıl geçileceğini öğrenin.
pushState yönlendirmesinin çalışması için uygulamanızın index.html dosyasına bir <base href> öğesi eklemeniz gerekir.
Tarayıcı, CSS dosyalarına, betiklere ve resimlere referans verirken göreceli URL'leri öneklemek için <base href> değerini kullanır.
<base> öğesini <head> etiketinin hemen sonrasına ekleyin.
Bu uygulama için olduğu gibi app klasörü uygulama kökü ise, index.html'deki href değerini burada gösterildiği gibi ayarlayın.
<base href="/" />
HTML5 URL'leri ve <base href>
Aşağıdaki yönergeler bir URL'nin farklı bölümlerine atıfta bulunacaktır. Bu şema, bu bölümlerin neye atıfta bulunduğunu gösterir:
foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment
Yönlendirici varsayılan olarak HTML5 pushState stilini kullansa da, bu stratejiyi bir <base href> ile yapılandırmanız gerekir.
Stratejiyi yapılandırmanın tercih edilen yolu, index.html'nin <head> bölümüne bir <base href> öğesi etiketi eklemektir.
<base href="/" />
Bu etiket olmadan, uygulamaya "derin bağlantı" yapıldığında tarayıcı kaynakları (resimler, CSS, betikler) yükleyemeyebilir.
Bazı geliştiriciler, <head> veya index.html dosyasına erişimleri olmadığı için <base> öğesini ekleyemeyebilir.
Bu geliştiriciler aşağıdaki iki adımı izleyerek yine de HTML5 URL'lerini kullanabilir:
- Yönlendiriciye uygun bir
APP_BASE_HREFdeğeri sağlayın. - Tüm web kaynakları için kök URL'ler (
authorityiçeren URL'ler) kullanın: CSS, resimler, betikler ve şablon HTML dosyaları.<base href>pathdeğeri "/" ile bitmelidir, çünkü tarayıcılarpathiçinde en sağdaki "/"'den sonraki karakterleri yok sayar<base href>birquerybölümü içeriyorsa,queryyalnızca sayfadaki bir bağlantının yolu boşsa vequery'si yoksa kullanılır. Bu,<base href>içindeki birquery'nin yalnızcaHashLocationStrategykullanılırken dahil edildiği anlamına gelir.Sayfadaki bir bağlantı kök URL ise (bir
authority'ye sahipse),<base href>kullanılmaz. Bu şekilde, bir authority'ye sahipAPP_BASE_HREF, Angular tarafından oluşturulan tüm bağlantıların<base href>değerini yok saymasına neden olur.<base href>içindeki bir fragment asla korunmaz
<base href> değerinin hedef URI'ler oluşturmak için nasıl kullanıldığı hakkında daha eksiksiz bilgi için referansları dönüştürme konusundaki RFC bölümüne bakın.
HashLocationStrategy
AppModule'deki RouterModule.forRoot() fonksiyonunun ikinci argümanı olarak bir nesnede useHash: true sağlayarak HashLocationStrategy kullanın.
providers: [provideRouter(appRoutes, withHashLocation())];
RouterModule.forRoot kullanırken, bu ikinci argümandaki useHash: true ile yapılandırılır: RouterModule.forRoot(routes, {useHash: true}).