2017-03-29 27 views
8

Angular 2'de çözüm başarısız olursa, başka bir sayfaya nasıl yönlendirme yapabilirim? this.router.navigate(["url"]) arayarak Sadece in the docs gibiÇözümleme başarısız olursa Yönlendirme Angular 2

resolve(route: ActivatedRouteSnapshot): Promise<any>|boolean { 

     return new Promise((resolve, reject) => { 

      if (route.params['id'] !== undefined) { 
       this.dataService.getHttpEmpresaShow(this.endpoint_url_Get + route.params['id']) 
        .subscribe(
        result => {      
          console.log("ok"); 
          return resolve(result);      
        }, 
        error => { 
       return resolve(error); 
      }); 
    }}); 

cevap

15

... (içinde Router enjekte etmek düşünüyorum:

Benim Çöz benim Düzenleme Sayfası için bu kararlılık diyoruz ama Çöz Page hataları işlemek istiyorum kurucunuz)

class MyResolve { 

    constructor(private router: Router) {} 

    resolve(route: ActivatedRouteSnapshot): Observable <any> { 
    return this.dataService.getHttpEmpresaShow(this.endpoint_url_Get + route.params['id']) 
     .catch(err => { 
     this.router.navigate(["/404"]); 
     return Observable.empty(); 
     }); 
    } 
} 
+0

Bu işe yaradı! ..... –

+3

**/404 ** rotasına sahip olmak gerçekten uygun değil! İdeal olarak, orijinal URL'yi (örn. Gönderiler/bazı eksik-kimlik) saklayabilmeli ve orijinal işleyici bileşeni yerine bir hata bileşeni gösterebilmeliyiz. Çözüm mekanizmalarında (global olarak) hataları çözmek için bu mekanizmayı uygulamak için herhangi bir yolu var mı? –

+0

404 rotasına sahip olmak gerçekten çok kolay! 'NgIf = "error" ile spagetti kodu yerine, merkezi hale getirilir. URL'yi tutmak istiyorsanız [yönlendirici belgeleri] (https://angular.io/api/router/Router) ve [NavigationExtras] (https://angular.io/api/router/NavigationExtras) – n00dl3