繁体   English   中英

如何使用 Angular 路由禁用 url 更改

[英]How to disable url changes with Angular routing

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

我找到了一些帖子,展示了如何在特定路由调用中阻止它,但 URL 也会在应用加载时更新。

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

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

谢谢,韦恩

如果您根本不想更新 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

我希望这有帮助!

更好的方法是在根路由(或通配符)上实现一个总是返回 false 的路由保护。

@NgModule({
  imports: [
    RouterModule.forRoot([
      {
        path: '**',
        canActivate: [NeverActivate]
      }
    ])
  ],
  providers: [NeverActivate, UserToken, Permissions]
})


@Injectable()
class NeverActivate implements CanActivate {

  canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<boolean>|Promise<boolean>|boolean {
    return false; // never allow activation
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM