2017-05-22 36 views
1

とredirectTo Iはそのメインパスといくつかのルーティングモジュールは、次のように設定されていますルートパスにアクセスします。次のように現在の設定はなります角度4ルーティングskipLocationChange

const appRoutes: Routes = [ 
    { 
     path: "", redirectTo: "/canvas", pathMatch: "full" 
    } 
]; 

@NgModule({ 
    imports: [ 
     RouterModule.forRoot(appRoutes) 
    ], 
    exports: [ 
     RouterModule 
    ], 
    declarations: [], 
    providers: [] 
}) 
export class AppRoutingModule { 

} 

それが正常に動作し、http://localhost:4201へのアクセスがhttp://localhost:4201/canvasにリダイレクトされています。

ただし、リダイレクト後にURLに/canvasパスを追加することは望ましくありません。これはどのように達成できますか?たとえば、私がrouter.navigate(... {skipLocationChange: true})と一緒に使用しているので、skipLocationChangeパラメータをこのリダイレクトに適用できる方法はありますか?

+0

なぜ、リダイレクトしようとしていますか? CanvasComponent'または 'path:" "、component:XXX、children:[{path:" "、component:CanvasComponent}]'これは、 'path: – ulubeyn

+0

私の意見ではそれほど明確な記述ではありません。私のコードの他の部分では、 'routerLink = '/ canvas''を使ってキャンバスコンポーネントにルーティングしています。私が 'routerLink = '''に変更すると、その文は明確にならなくなります。 –

答えて

2

私はAppComponentrouter.eventsに加入して、手動でtrueに設定されてskipLocationChangecanvasパスに移動してその問題を解決してきました。

@Component({ 
    ... 
}) 
export class AppComponent { 
    constructor(private router: Router) { 
     this.router.events.subscribe(routerEvent => { 
      if (routerEvent instanceof NavigationStart) { 
       if (routerEvent.url == "/") { 
        this.router.navigate(["canvas"], {skipLocationChange: true}) 
       } 
      } 
     }); 
    } 
} 
0
少し遅れて

、多分それは便利です:

私は同じ問題を抱えていたし、このようにRouter.forRoot

を宣言するときExtraOptionsを追加することによって、それを解決するために管理:

imports: [ RouterModule.forRoot(routes, { initialNavigation : false }) ], 

これにより、URLにセット/キャンバスを使用する初期のナビゲーションを回避できます。

その後、skipLocationChangeを引き続き使用できます。

希望すると便利です。