2017-03-29 17 views
8

解決方法Angular 2で解決に失敗した場合、別のページにリダイレクトできますか? 私は私のページの編集のために、この決意を呼び出すが、私は解決ページでエラーResolveが失敗した場合にリダイレクトするAngular 2

私の決意を扱いたい:this.router.navigate(["url"])を呼び出すだけでin the docsよう

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); 
      }); 
    }}); 

答えて

15

、...(中Routerを注入することだと思いますあなたのコンストラクタ)

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

それは働きました!..... –

+3

**/** ** **ルートを持つことは本当に便利ではありません!理想的には元のURL(posts/some-missing-idなど)を保持し、元のハンドラコンポーネントではなくエラーコンポーネントを表示できるようにする必要があります。解決ガードのエラーを(グローバルに)処理するためのメカニズムを実装する方法はありますか? –

+0

404路線を持つのが本当に便利です! 'ngIf ="エラー "でスパゲティコードを持つ代わりに、"それは集中化されています。 URLを保持したい場合は、[ルーターのドキュメント](https://angular.io/api/router/Router)と[NavigationExtras](https://angular.io/api/router/NavigationExtras)を参照してください。 – n00dl3

関連する問題