2016-07-07 6 views
1

角度2のバージョンが変更されて以来、ルータの機能navigateに問題があります。 2.0:角度/ルータ@角度2のルータは、RC3にアップグレードした後、適切なルートに戻っていません。

:私はので、私はこのようなルータのバージョンを変更しなければならなかった 2.0.0-rc.3に2.0.0-rc.1からのバージョンをアップグレードしました。 0-rc.13.0.0-alpha7

と私はすべてのルートを含むファイルを作成しました。 2.0 this.router.navigate(['/login']);作品うまくこのコンポーネントのコードを

ngOnInit() { 
    console.log('isLoggedin: ' + isLoggedin()) 
    if (isLoggedin()) { 
     this.router.navigate(['/home']); 
    } else { 
     this.router.navigate(['/login']); 
    } 
} 

export const routes:RouterConfig = [ 
    { path: '', component: Home, terminal: true }, 
    { path: 'home', component: Home }, 
    { path: 'login', component: Login }, 
    ... 

、その後私は、このコードでコンポーネントを有するブートストラップ機能

bootstrap(AppComponent, [ 
    AppWebservice, 
    HTTP_PROVIDERS, 
    APP_ROUTER_PROVIDERS, 
    provide(Config, {useClass: Config}) 
]).catch(err => console.error(err)); 

へのルートを追加しました。 0-rc.1に変更されましたが、新しいバージョンでは動作しません。 isLoggedin()の値をチェックしました。値がfalseの場合でも、ログインページではなくホームページに再ルーティングされます。

ルータが正しく動作しない理由を知っている人はいますか?

+0

チェックこのリンクhttp://victorsavkin.com/post/146722301646/angular-router-empty-paths-componentless-routes – kTn

+0

@kTnありがとう:)私は特に「マッチング戦略とリダイレクトについての部分を読んで"私はそれで私の問題を解決しませんでした。たぶん私は何かを誤解したか、あなたはその投稿の別の部分を考えていたでしょうか? – Inox

答えて

0

これは、ルートにGuardを設定する基本的な例です。

canActivate: [HomeGuard]をルートに追加すると、リダイレクトが必要になります。

isLoggedinをガードに注入するサービスを作成する必要があります。

もちろん、ガード注射液を作成してください。

ご質問がある場合はお知らせください。

export const routes:RouterConfig = [ 
    { path: '', component: Home, terminal: true, canActivate: [HomeGuard]}, 
    { path: 'home', component: Home }, 
    { path: 'login', component: Login }, 


    @Injectable() 
    export class HomeGuard implements CanActivate { 
    constructor(provate isLoggedinService: IsLoggedinService, private router: Router) {} 

    canActivate() { 
     console.log('this.isLoggedinService.isLoggedin: ' + this.isLoggedinService.isLoggedin()) 
     if (this.isLoggedinService.isLoggedin()) { 
      this.router.navigateByUrl('home'); 
      return false; 
     } else { 
      this.router.navigateByUrl('login'); 
      return false; 
     } 
    } 
    } 
+0

私は 'this.router.navigateByUrl( 'login');'と 'this.router.navigateByUrl( '/ login');で試してみましたが動作しません:/ – Inox

+0

canActivateでGuardを追加しようとしましたかルートに? – lbertenasco

+0

今日は解決策が見つからなければ、明日はその計画を立てていません。 – Inox

関連する問題