Angular Routing ve Navigation

Angular, özellikle tek sayfalı uygulamalar (Single Page Applications, SPA) için popüler bir web uygulama çerçevesidir. SPA’lar, tüm içeriği bir kerede yükleyip, kullanıcının etkileşimine bağlı olarak belirli bölümleri değiştirerek çalışır. Bu değişikliklerin düzenli ve optimize edilmiş bir şekilde yapılabilmesi için Angular’da routing mekanizması bulunur.

Angular routing, uygulamanızdaki farklı görünüm ve navigasyon setlerini yönetmenizi sağlar. URL’deki değişikliklere tepki olarak belirli bileşenleri (components) görüntülemenize olanak tanır.

 Örnek:  /home URL’sini ziyaret edildiğinde HomeComponent’i, /profile URL’sini ziyaret edildiğinde ise ProfileComponent’i göstermek istiyorsanız, Angular routing ile bu yönlendirmeyi kolayca yapabilirsiniz.

Neden Kullanılır?

SPA Desteği: Routing, SPA’ların hızlı ve etkili bir şekilde çalışmasını sağlar. Sayfa yenilenmesi olmadan farklı içerikleri ve bileşenleri gösterir.

Navigasyon Kontrolü: Uygulamanızdaki navigasyonu merkezi bir yerden yönetebilirsiniz. Bu, büyük projelerde organizasyonu ve bakımı kolaylaştırır.

Lazy Loading: Büyük uygulamalar için, tüm bileşenleri ve modülleri başlangıçta yüklemek yerine, ihtiyaç oldukça yüklemek için “tembel yükleme” (lazy loading) özelliğini kullanabilirsiniz. Bu, uygulamanın başlangıç yükleme süresini hızlandırır.

Gelişmiş Kullanıcı Deneyimi: Sayfalar arasında geçişlerde sayfanın yeniden yüklenmesine gerek kalmaz, bu da kullanıcının daha akıcı bir deneyim yaşamasını sağlar.

Angular Routing Uygulamaları – 1

Ilk olarak Angular’da routing işlemleri nasıl yapılır onu adım adım açıklayalım. Öncelikle Home, About ve Contact sayfalarının her biri için ayrı componentler oluşturacağız. Sonrasında bu componentleri bir navbar ile birleştirip, tıklanıldığında ilgili sayfaya yönlendirme yapacağız.

Adım 1: Angular Projesi Oluşturma

Eğer yeni bir proje başlatmak istiyorsanız şu komutla başlayabilirsiniz:

Adım 2: Component Oluşturma

3 farklı component oluşturalım: Home, About, Contact.

Adım 3: Routing İçin Ayarlamalar

AppRoutingModule Oluşturma

Eğer angular-routing-module dosyası yoksa şu komut ile oluşturabilirsiniz:

Yönlendirmeleri Ayarlamak

app-routing.module.ts dosyasını açın ve şu kodları ekleyin:

Navbar Oluşturma

app.component.html dosyasını açın ve şunları ekleyin:

Adım 4: Uygulamayı Çalıştırma

Bu komutla uygulamanızı çalıştırdığınızda, bir navbar göreceksiniz ve bu navbar üzerindeki her link, sizi ilgili sayfaya yönlendirecektir.

Angular Routing Uygulamaları – 2

İkinci örnek için bir API’den ürün listesi alacağız, sonra bu listeyi ana sayfada göstereceğiz. Bir ürüne tıklanırsa, bu bizi detay sayfasına yönlendirecek ve ilgili ürünün detaylarını gösterecek.

Adım 1: Product ve ProductDetail Componentleri Oluşturma

İlk olarak iki component oluşturalım:

Adım 2: ProductService Oluşturma

Adım 3: ProductService’de API İstekleri

product.service.ts içerisine HTTP isteği yapabilmek için HTTPClient modülünü ekleyelim.

Adım 4: Routing Ayarlamaları

app-routing.module.ts dosyasını güncelleyelim:

Adım 5: Ürün Listesini Gösterme

product.component.ts ve product.component.html dosyalarını şu şekilde güncelleyelim:

Adım 6: Ürün Detayını Gösterme

product-detail.component.ts ve product-detail.component.html dosyalarını şu şekilde güncelleyelim:

Yukarıda 2 farklı ngOnInit metodu yazdım. Farkını şu şekilde açıklayabilirim:

 Snapshot Kullanımı: 

this.route.snapshot.paramMap.get(‘id’): Bu yöntem, bileşen başlatıldığında URL’deki parametreyi anlık olarak (snapshot) alır.

Eğer bileşen yaşam döngüsünde iken URL’deki id parametresi değişirse (örneğin, kullanıcı /product/1’den /product/2’ye geçerse) bu değişiklik yakalanmaz ve ürün bilgisi güncellenmez.

Genellikle kullanıcının aynı bileşen içerisinde farklı parametrelerle gezinme ihtimali düşükse kullanılır.

 paramMap Akışını Dinlemek: 

this.route.paramMap.subscribe(…): Bu yöntemde, paramMap bir Observable’dır ve bu Observable’ı subscribe ederek URL’deki parametre değişikliklerini dinleyebiliriz.

Böylece, bileşen yaşam döngüsü boyunca URL’deki id parametresi değiştiğinde bu değişiklik otomatik olarak yakalanır ve ürün bilgisi güncellenir.

Özellikle kullanıcının aynı bileşen içerisinde farklı parametrelerle gezinme ihtimali yüksekse bu yöntem tercih edilir.

Hangi yöntemin kullanılacağı, uygulamanızın ihtiyaçlarına ve kullanıcının nasıl bir interaksiyon içerisinde olacağına bağlıdır. Eğer bir bileşende farklı parametrelerle (örneğin farklı ürün ID’leri ile) gezinme ihtimali yüksekse, paramMap’i dinlemek daha iyi bir seçenektir.

Bu adımlarla, ürün listesi ana sayfada gösterilecek ve bir ürüne tıklandığında detay sayfasına gidilip ilgili ürünün detayları gösterilecek.

Umarım “Angular Routing ve Navigation” başlıklı yazım sizin için faydalı olmuştur.

Şu yazılar da ilginizi çekebilir.

Angular Form İşlemleri: Template-driven ve Reactive Formlar

Yeni bir yazımda görüşmek üzere.

Happy coding!

Yorum Yazın