首页 > 解决方案 > 如何使用 Angular 路由禁用 url 更改

问题描述

我的 Angular 7 应用程序需要在 iFrame 中呈现。由于系统的特殊性,我需要防止 URL 发生变化,或者我应该说我需要 Angular,而不是期望 URL 发生变化。

我发现一些帖子显示了如何在特定的路由调用中阻止它,但是当应用程序加载时 URL 也会更新。

目标是维护 URL,例如:website.com/applicaition,即使路由发生变化,window.location 也没有更新。

https://website.com/application [每个视图都需要] https://website.com/application/home [任何视图都不需要]

谢谢,韦恩

标签: angularangular-routingangular7

解决方案


如果您根本不希望更新 URL,则需要做两件事。

首先,添加:

{ initialNavigation: false }

到这样的路由器设置:

const routes: Routes = [
  { path: 'home', component: HomeComponent },
  { path: '**', component: HomeComponent }
];

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

不幸的是,我找不到全局更新此内容的方法,因此您需要为应用程序中的每个导航点设置以下内容。

使用路由器链接:

<a routerLink="/home" routerLinkActive="active" skipLocationChange="true" >Home</a>

使用 ts 导航调用:

router.navigate(['/home'], { skipLocationChange: true });

(参考:https ://angular.io/api/router/NavigationExtras )

我希望这有帮助!


推荐阅读