2016-06-30 13 views
35

Yönlendiriciden kaldırılan yeni Yönlendirici 2 yönlendiriciyi kullanmak için yükseltdim ve bazı davranışlar değişti.Bileşeni yenilemeyen aynı rotaya mı gidiyorsunuz?

Sorun yaşadığım sayfa bir arama sayfasıdır. Tüm arama terimlerini HashLocationStrategy kullanarak URL’ye koymayı seçtik. yolları şu şekilde görünür:

const routes: RouterConfig = [ 
    { path: '', component: HomeComponent }, 
    { path: 'search/:term/:cat/:page/:sort/:size/:more', component: HomeComponent }, 
    { path: 'search/:term/:cat/:page/:sort/:size', component: HomeComponent }, 
    { path: 'search/:term/:cat/:page/:sort', component: HomeComponent }, 
    { path: 'search/:term/:cat/:page', component: HomeComponent }, 
    { path: 'search/:term/:cat', component: HomeComponent }, 
    { path: 'search/:term', component: HomeComponent }, 
    { path: 'details/:accountNumber', component: DetailsComponent } 
]; 

Bir sorgu dizesi yaklaşım, tüm bu seçeneklerin ancak diğer insanlar karar proje gereksinimleri için iyi bir uyum olabilir biliyorum ...

Neyse sonra this.router.navigate(['/search/Hello']); kullanarak localhost/#/search/Hello giderseniz yönlendirici iyi çalışıyor ve her şey harika. Bu sayfada this.router.navigate(['/search/World']);'u denediğimde, tarayıcının adres çubuğundaki URL buna göre güncellenecek ancak bileşen hiç değişmeyecek.

Önceden arama bileşenini yeniden kullanmak istediğimi belirtmek için routerCanReuse kullanabilir ve gezinme işlemi gerçekleştiğinde routerOnReuse aramayı yeniden çalıştırırdım. @angular/router'da buna eşdeğer göremiyorum. Mevcut rotayı yeni URL parametreleriyle nasıl yeniden yükleyebilirim?

Angular 2 için 2.0.0-rc.3 sürümü ve @ açısal/yönlendiricinin 3.0.0-alpha.8 sürümü çalıştırıyorum.

+0

Ben app.component.ts sayfaya veya fiili sayfasında bu kodu koyabilirsiniz nerede söyler problem.can aynı karşı karşıyayım (ki yeniden yüklenmiyor). Bir şey daha ne ** this.service.get (term) .then (sonuç => {console.log (sonuç);}); **. Kısaca açıklayabilir misin? – pushp

cevap

33

Yalnızca paramitler değiştiyse, bileşenin kendisi yeniden başlatılmaz. Ancak, gönderdiğiniz parametrelerde değişikliklere abone olabilirsiniz.

ngOnInit yöntemine Örneğin böyle bir şey yapabilirsiniz:

ngOnInit() { 
    this.sub = this.route.params.subscribe(params => { 
     const term = params['term']; 
     this.service.get(term).then(result => { console.log(result); }); 
    }); 
    } 
+3

Paramlerin neden Gözlemlenebilir olduğunu merak ettim. Bu açıklar ve çok anlam ifade eder. –

+5

Bunu anlamıyorum. Sorun ya da en azından benim problemim- aynı rota farklı bir parametre değeri ile çağrıldığında ngOnInit fonksiyonunun tekrar çalışmadığıdır. Peki bu yardım ne? – Inigo

+1

Buradaki fikir, açısal bileşenin tekrar monte edilmesine gerek olmamasıdır. Sadece veriler değişti, özellikle de rota verileri. Yani sahip olduğunuz şey, rota verilerinin değiştiği her an ortaya çıkacak ve bu değişikliğe tepki gösterebilecek bir işlevdir. –

İlgili konular