2016-10-24 9 views
1

ページの更新時に '/ splash'ルートを強制的にナビゲートするにはどうすればよいですか?ページ更新時にルータをリセットするにはどうすればよいですか?

自分自身が '/ discover'にあり、ページを更新するとそこに残りますが、アプリケーションを最初からやり直したい(スプラッシュ)ようにします。私は私の親AppComponentのOnInit & OnDestroyメソッド内router.navigate通話を発信しようとしてきました

const appRoutes: Routes = [ 
    { path: '', redirectTo: '/splash', pathMatch: 'full' }, 
    { path: 'splash'    , component: SplashComponent  }, 
    { path: 'discover'   , component: DiscoverComponent  }, 
    { path: 'broadcast'   , component: BroadcastComponent  }, 
    { path: 'notifications'  , component: NotificationsComponent }, 
    { path: 'notifications/:key' , component: NotificationComponent } 
]; 

export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes); 

は、しかし、無視されるように表示されます。

ngOnInit() : void { 
    this.router.navigate(['splash']); 
} 

私はまた、ルータ自体のOnDestroyメソッド内でナビゲート通話を発信しようとしました。

+0

あなたはWebサーバのどのように使うのですか? Apache? – BeetleJuice

答えて

1

あなたAppComponentコンストラクタでルータの最初のナビゲーションイベントをサブスクライブすることによってそれを行うことができます。

import 'rxjs/add/operator/filter'; 
    import { Router, NavigationStart } from '@angular/router'; 

    export class AppComponent { 
     private subscription: any; 

     constructor(private router: Router) { 
     this.subscription = this.router.events 
      .filter(e => e instanceof NavigationStart && e.id === 1) 
      .subscribe(e => { 
      this.redirectToSplash(); 
      }); 
     } 

     private redirectToSplash() { 
     this.router.navigate(["splash"]); 
     this.subscription.unsubscribe(); 
     } 
    } 
関連する問題