2016-09-05 21 views
5

Angular 2'yi "depricated" işaretli yönlendiriciyi kullanarak yükseltdim ve "new" yönlendiricisini rc5 ve rc6'da kullanmaya başladım. Ancak şu anda bir sorunum var (rc5'de başlamış ve hala rc6'da da aynıdır). Burada aynı bileşene gitmesi gereken ancak farklı parametreler içeren bir bileşene sahip olmak (diğer verileri almak için, o anda tümüyle görünümünde olanı). parametreler üzerinde).Aynı bileşen için açısal 2 rota

Depolu yönlendiricisinde, this.router.navigate ile bileşene giderken her zaman çağrılan yapıcı ve AfterViewInit vb. Yeni yönlendiricide, birbiri ardına aynı bileşeni çağırırken kurucu ve diğer şeyler aranmaz. Yani sanırım bir çeşit "büyü"/önbellek var. Ayrıca, bileşen içine gerekli bir parametre ve birkaç isteğe bağlı parametre gönderdiğim için bağlantının şu şekilde bir şey görmesi gerektiğini unutmayın: http://localhost:2222/mycomponent/1;someotherparam=123

Bileşeni, her seferinde gezinmek için oluşturmaya zorlamanın bir yolu var mı?

+0

Harika bir yanıt değil, ancak ng2'yi doğru şekilde kullandığınızdan emin değilim. Farklı bileşenlerle aynı bileşene yönlendirilmemelisiniz. Bileşeninizi değiştirmek için dahili durum değişikliklerini kullanın. Değiştirilecek URL'ye ihtiyacınız varsa, bu cevabı inceleyin: http://stackoverflow.com/questions/35618463/change-route-params-without-reloading-in-angular-2/39322473#39322473 –

+0

Stres yapmalıyım navigasyon kodunun şimdi eski yönlendirici üzerinde çalıştığı, şimdi depricated/remove. Angular 2'nin birçok sürümünde uzun süre çalıştı, ancak sorun yeni yönlendirici ile. Geri/ileri düğmesiyle de ileri geri hareket edebilmeye ihtiyacım var ve doğru veri, URL parametrelerine göre yüklenir. Sadece URL'yi değiştirmek benim durumumda benim için iyi sonuç vermez (özellikle kullanıcı geri/ileri düğmelerini tıklattığında, bileşen için verilerin yeniden yüklenmesi gerekir). – alexsoftware

+1

Şimdi bunun açısal 2 yönlendirici ile bir hata olduğuna inanıyorum. Yeni bir rota (aynı bileşen olsa bile) bileşen tekrar oluşturulmalıdır. Bileşenin yapıcısına bunu ekleyerek bir geçici çözümüm var: yönlendirici.events.subscribe ((olay: Olay) => { if (olayı NavigationEnd öğesinde) {// ActivatedRoute içindeki parametrelere göre veri yükleme}}) ; Bu, rota değiştiğinde toplanmayı mümkün kılar ve verileri buna göre yükler. – alexsoftware

cevap

5

Okuma Rota Parametreleri

ActivatedRoute params özelliği bir gözlemlenebilir olduğunu sebebi Eğik 2.

Özellikle bölüm için Rangle.io guide bir göz atın o yönlendirici olmayabilir olduğunu Aynı bileşene giderken bileşeni yeniden oluşturun. Bu durumda parametre, bileşen yeniden oluşturulmadan değişebilir.

Yani bileşen yeniden olmayacak ama sen ilgilenen rotanın bölgelerinde değişikliklere abone (params, data, fragment, queryParams) ve subscribe() geri arama bu başlatma yöntemleri çağırabilir.

İlgili konular