メインパスが次のように設定されたルーティングモジュールがあります:_/canvas
_
_const canvasRoutes: Routes = [
{
path: "canvas", component: CanvasComponent
}
];
@NgModule({
imports: [
RouterModule.forChild(canvasRoutes)
],
exports: [
RouterModule
],
declarations: [],
providers: []
})
export class CanvasRoutingModule {
}
_
アプリケーションルーティングモジュールでは、ルートパスにアクセスするたびに、_/canvas
_にリダイレクトパスを設定します。現在、構成は次のようになっています。
_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
_にリダイレクトされます。
ただし、リダイレクト後に_/canvas
_パスをURLに追加したくありません。どうすればこれを達成できますか?たとえば、router.navigate(... {skipLocationChange: true})
で使用しているときに、このリダイレクトにskipLocationChange
パラメーターを適用する方法はありますか?
私はrouter.events
をAppComponent
に配置し、canvas
をtrueに設定してskipLocationChange
パスに手動で移動します。
@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})
}
}
});
}
}
少し遅れましたが、役に立つかもしれません:
私は同じ問題を抱えていて、Router.forRootを宣言するときにExtraOptionsを追加することでそれを解決することができました
このような:
imports: [ RouterModule.forRoot(routes, { initialNavigation : false }) ],
これにより、/ canvasをURLに設定する最初のナビゲーションを回避できます。
その後、skipLocationChangeを引き続き使用できます。
お役に立てれば!