2016-12-18 27 views
17

İzin verilmeyen sayfaya erişmeye çalışırken kullanıcıyı hata sayfasına yönlendirmeye çalışıyorum. Sorun, skipLocationChange bu durumda çalışmaz olmasıdır. Hata sayfasına gider, ancak URL köke dönüşür. Orijinal url kullanıcısı nasıl sağlanır?Köşeli 2 rota uyumsuzluğu gideceği yere gitmiyor

resolve(route: ActivatedRouteSnapshot): Observable<any|boolean>|boolean { 
    return this.apiclientService.get('cars/' + route.params['id']).map(
     response => { 
      if (response.data.user_id === this.authService.user().id) { 
       return response.data; 
      } 

      this.router.navigate(['/404'], { skipLocationChange: true }); 
      return false; 
     } 
    ).catch(error => { 
     this.router.navigate(['/404'], { skipLocationChange: true }); 

     return Observable.of(false); 
    }); 
} 
+0

Neden koruma kullanmıyorsunuz? https://angular.io/docs/ts/latest/guide/router.html#!#guards Bu sorunun sizin sorununuzu çözüp görmediğinden emin değiliz ama sanırım bu tam olarak ne için bekler. –

+0

Korumayı denedim (canActivate) ancak sorun aynı + çözümleyebildiğimiz gibi denetleyiciye veri aktaramaz. Eğer herhangi bir örnek varsa takdir edeceğim. – izupet

+0

Üzgünüm, bir şekilde kodunuzun bir bileşende olduğunu varsaydım. “Çöz” demek istediğim şey. Yeniden üretime izin veren bir Plunker, rotaları da görmek için harika olurdu. –

cevap

0

Sorun, this.route'un kök düzeyinde enjekte edilmesidir, bu nedenle kök yolu olacaktır.

Sen intersted bulmak için yolları geçebilirler.

+0

Hiçbiri işe yaramıyor ... – izupet

1

Ben skipLocationChange aslında çalışıyor düşünüyorum. Şey, angular, gardiyan başarısız olduğu için yeni rotaya gitmedi. Başarısız URL'yi yakalamak istiyorsanız, route: ActivatedRouteSnapshot paramını inceleyin.