angular - 如何使用 Angular 路由禁用 url 更改
问题描述
我的 Angular 7 应用程序需要在 iFrame 中呈现。由于系统的特殊性,我需要防止 URL 发生变化,或者我应该说我需要 Angular,而不是期望 URL 发生变化。
我发现一些帖子显示了如何在特定的路由调用中阻止它,但是当应用程序加载时 URL 也会更新。
目标是维护 URL,例如:website.com/applicaition,即使路由发生变化,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 )
我希望这有帮助!
推荐阅读
- javascript - 在标记页面中,如何向 html 标签的 textContent 属性添加内容?
- java - InfoWindowAdapter 使用或覆盖已弃用的 API
- php - .htaccess 在 RewriteRule 中抛出带有字母 P 的 404
- c++ - C++ 标准中的适配器是什么?它与适配器设计模式有何关系?
- python - 将数据和标题添加到新数据框并将文件名填充到列中
- python - 如果 tk.Toplevel 在不同的文件中,如何关闭窗口
- batch-file - 参数中的批处理分隔符
- python - 如何传递要在python中使用的函数名
- visual-studio - Visual Studio Xamarin Forms App 无法在 iPhoneSimulator 上启动
- php - 运行 php 脚本循环时如何监控剩余时间?