【问题标题】:Changing the base href on angular navigate更改角度导航的基本href
【发布时间】:2018-12-05 04:29:20
【问题描述】:

在使用 ng build 构建我的 Angular 应用程序时,我为我的应用程序提供了 --base-href 标志作为 foo。所以我的应用程序的 URL 看起来像 https://10.10.10.19:8080/foo。但是我想导航到一个在 URL 中有 bar 的页面,即https://10.10.10.19:8080/bar

我尝试了 router.navigateByUrl('/bar') 但它创建了一个 URL https://10.10.10.19:8080/foo/bar,这不是我想要的。

有人可以帮我解决这里丢失或出错的问题吗?

【问题讨论】:

  • 显示你的代码
  • 具体来说,向我们展示您的路由文件。并尝试更改 index.html 中的 baseHref = "/"
  • 为您的应用设置基础在我发表的一篇文章中进行了说明,希望对您有所帮助:joeljoseph.net/…

标签: angular angular-routing angular-router


【解决方案1】:

构建后不确定,但在开发过程中我使用以下代码,它对我有用..

this.router.navigate(['../bar'], { relativeTo: this.route });

【讨论】:

  • 这里的this.route是什么?是不是你说的 ActivatedRoute 实例?
  • 我目前位于 URL 位置 10.10.10.19:8080/foo/a1 并希望导航到 10.10.10.19:8080/bar/b2。根据您的建议,我对this.router.navigate(['../../bar/b1'], { relativeTo: this.route }); 进行了同样的尝试,但同样失败了,因为“../”的数量无效。对此有什么想法吗?
【解决方案2】:

基本上,您希望动态设置基本 href,因为您不能仅删除基本 href (AFAIK)。

在 main.ts 上导入 base_HREF

import { APP_BASE_HREF } from '@angular/common';

并将您的提供者设置如下

providers: [
    {
        provide: APP_BASE_HREF,
        useValue: '/' + (window.location.pathname.split('/')[1] || '')
    }
]

感谢此链接:此链接可以使用:Angular 2 / 4 / 5 - Set base href dynamically

【讨论】:

    【解决方案3】:

    可以通过依赖注入或者通过httpInterceptors来实现。

    我希望以下链接对您的问题有所帮助。 http://www.projectcodify.com/angular-set-base-url-dynamically

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多