Angular 4 路由器 : How to not display parameters in the url bar?

标签 angular

当我使用时:

  constructor(router: Router) {
    router.navigate(['page2', 123456789]);
  }

我在地址栏中看到 example.com/page2/123456789。有可能隐藏它吗?我希望有人能够输入 example.com/page2 以便他/她导航到这个特殊页面。它只能在内部使用命令 router.navigate(['xy', 'parameter']);

最佳答案

angularJS 或 angularjs 1.x 中的状态路由可以在路由期间使用动态数据隐藏参数,但 Angular 2+ 路由不允许。

唯一的解决方案是使用下面阅读的其他服务。

param 并不意味着被隐藏,但 data 属性是。因此,与其使用 SkipLocationChange: true,不如使用 data 属性。注意数据属性不能用于动态内容。它将更多的是静态数据。

SkipLocationChange: true 在不将新状态推送到历史记录的情况下进行导航。这意味着如果您从/page1 导航到/page2,那么导航后 url 仍将显示/page1。这不是作者所期待的。这里的期望是在 url 中显示/page2,但在 url 中没有可见的参数。

解决方案是在路由配置中使用数据属性 例如

 path: 'product', component: ProductComponent , data: [{isProd: true}]}

然后就可以得到数据的值如下图

 route.snapshot.data[0]['isProd'];

关于 Angular 4 路由器 : How to not display parameters in the url bar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46377565/

相关文章:

html - 如何以 Angular 禁用特定日期之前的所有日期?

android - ionic 切换菜单不会关闭 Android 设备上的侧边菜单

javascript - Angular cli 不会自动识别新测试

angular - 如何在首次登录时要求和存储额外的用户配置文件数据?

angular - "async"管道不呈现流更新

javascript - 通过 ngSubmit 提交时未定义 Angular 形式

typescript - 管道中的 Angular 2 依赖注入(inject)

javascript - 如何使用子组件使用 Tabset 组件创建动态选项卡?

Angular [禁用] ="MyBoolean"不工作

angular - 在 Angular 2 中测试 API 调用