Angular’da Routing
Yusha Kuralay - 2023/08/05
Angular'da dinamik routing'in ne olduğunu, nasıl kurulacağını ve nasıl uygulanacağını inceleyeceğiz
Örnek bir proje ortaya koymak için Ürün listesi sayfası (Products list) ve Ürün detayı sayfası (Product detail) arasında dinamik geçişler sağlayacağız. Temel amacımız Listedeki bir ürünün detay sayfasında gittiğimizde o ürüne özel URL uzantısına gitmek ve gittiğimiz sayfada o ürünün detaylarını kullanıcıya aktarmaktır.
Şu anda sıfırdan bir angular projesi kurduğumuzda angular CLI, projeye routing eklenip eklenmeyeceğini sorar. Bu blogda yazısında, mevcut bir Angular projesine routing eklemeyi göstermek için sıfırdan bir proje oluşturmayacağız. Bunun yerine var olan bir projeye manuel olarak routing eklemeyi göstereceğim.
Component’larımızı oluşturalım
Projenin istenilen yerine ” products.json “ dosyası oluşturup içini aşağıdaki örnek yapıyla dolduralım.
tsconfig.json içerisine gidip aşağıdaki kodları ekleyelim. Bu sayede component’larımızın içine JSON formatındaki verimizi ekleyebileceğiz.
Routing modelimizi oluşturalım
oluşan dosyanın içine gidip aşağıdaki kodu ekleyelim.
Bundan sonra ise path’lerimizi tanımlamak ve html tarafına routing’i yansıtmak kaldı.
Routes array içerisine objeler koyup path: '' kısmına URL uzantımızı ve … kısmına da component’ımızın adını yazıyoruz.
'product/:id' uzantısı /product/1 gibi bir uzantıya götürecektir bizi. Yani path daki “ :id ” routing’imizi dinamik hale getirir ve son olarak path: '**' yazma sebebimiz var olmayan bir URL’e gidilirse kullanıcıyı “ “ URL’ine yeniden yönlendirsin. Yeniden yönlendirmesini redirectTo: '' yazarak sağlıyoruz.
app.component.html dosyasına giderek içeriği tamamen siliyoruz ve aşağıdaki kodu ekliyoruz
bu kodu yazarak routing tamamen aktif hale geliyor
ng serve -o
yazarak programın live halini browserdan inceleyebilirsiniz. Karşılaşmamız gereken ekran product list component’ın çalışıyo yazısıdır.products-list.ts dosyasında, önceden oluşturduğumuz datayı import ediyoruz. Sonrasında o datayı products diye bir variable oluşturup içine ekliyoruz.
sayfa en son böyle gözükmelidir.
products-list.html dosyasında ise bir div bir başlık ve ondan sonrasında bir ul listesi oluşturup içindeki item’ları *ngFor ile basarak ürünlerimizin çıktısını alıyoruz. Liste item’ı içerisine ürünün modelini ve markasını yazdırıp en sonuna detail listesine girmesi için bir button koyuyoruz. button’ı çevreleyen bir tagı oluşturarak içerisine
Şeklinde URL yapısını tanımlıyoruz
Sayfanın son hali aşağıdaki gibi gözükmektedir, eğer isterseniz class isimlerini de ekleyerek alttaki CSS’i kendi kodunuza kopyalayıp şık olmasada daha belirgin bir görüntü çıktısı alabilirsiniz.
Button’lara tıkladığımızda URL uzantısına bakacak olursak ürünün id’sine göre bir URL oluştuğunu göreceğiz. Şimdi bu sayfanın içini hızlıca doldurup bir tane de ana ekrana dönmek için button hazırlayalım.
detail.ts dosyasına bu kodları ekleyerek findSelectedProduct() fonksiyonu sonucunda seçilen ürünü bulup ona özel bilgileri sayfamızda paylaşmak üzere kenara ayıklayabiliriz.
(farklı ve daha verimli fonksiyonlar kullanabilirsiniz)
Ayıklama işlemi bittikten sonra elimizde selectedProduct adında bir obje olacaktır .html uzantılı dosyaya gidip aşağıdaki kodları yazdıktan sonra CSS’i de ekliyorum.
Gördüğünüz gibi bir back to home button u oluşturarak URL’ini “/” boş ayarlıyorum ve böylelikle button a bastığımızda sitenin ana sayfasına yönlendirilmiş oluyoruz.
Ana sayfayı kurcalarsak tıkladığımız ürün id’sine özel link uzantısına gidip o sayfada ürün detaylarını görebiliriz.
Bu blog yazımda Angular da routing nedir nasıl kurulur ve site içerisinde ufak bir örnekle nasıl kullanılabileceğine örnek göstermek istedim.
Okuduğunuz için teşekkür ederim. Bir sonraki blog yazımda görüşmek üzere. Mutlu kodlamalar.
Yusha Kuralay - yusha.kuralay@arksoft.com.tr
Last updated