Angular2 - APP_BASE_HREF 与 HashLocationStrategy

2023-11-26

我有一个角度应用程序使用带有 HashLocationStrategy 的路由,我需要在主 html 文件中设置不同的值并在路由中设置不同的值。

我尝试了这个解决方案:

@NgModule({
    imports: [
        BrowserModule,
        FormsModule,
        HttpModule,
        MyRouting // with useHash set to true
    ],
    declarations: [
        AppComponent,
    ],
    providers: [
        { provide: APP_BASE_HREF, useValue: '/prefix' }
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }

工作得很好,但值“/前缀”是在哈希之后插入的,如下所示:

http://myapp.com/#/prefix/home

而我想要:

http://myapp.com/prefix/#/home

为了清楚起见,我的基本标签是:

<base href="/">

我遇到了同样的问题并用我自己的 HashLocationStrategy 子类修复了它

import { Injectable } from '@angular/core';
import { HashLocationStrategy } from '@angular/common';

@Injectable()    
export class CustomLocationStrategy extends HashLocationStrategy {
    prepareExternalUrl(internal: string): string {
        return this.getBaseHref() + '#' + internal;
    }
}

然后在我的模块中使用它

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LocationStrategy } from '@angular/common';
import { APP_BASE_HREF } from '@angular/common';
import { CustomLocationStrategy } from './app.common';

const appRoutes: Routes = [...];

@NgModule({
    imports: [
        RouterModule.forRoot(appRoutes, { useHash: true })
    ],
    providers: [
        { provide: APP_BASE_HREF, useValue: window.location.pathname },
        { provide: LocationStrategy, useClass: CustomLocationStrategy },
    ]
})
export class AppModule {
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular2 - APP_BASE_HREF 与 HashLocationStrategy 的相关文章

随机推荐

  • 批处理命令捕获所有可能的 ping 问题

    我有一个关于验证 ping 是否在批处理命令中正确返回的问题 目前 我必须通过 3 种不同的方式检查 ping 才能知道服务器实际上已启动 我想将这些组合成一个 ping 命令 我尝试过使用不同的错误级别或不使用错误级别 0 等 它们都没有
  • 连续的 CSS 过渡

    有没有办法连续动画背景图像background position使用 CSS3 转换的属性 是的 有可能 DEMO div background url http lorempixel com 100 100 height 100px wi
  • mvc3 https 和 http

    我正在将 ASP NET 应用程序转换为 MVC3 假设我有一个需要 https 的登录页面 而其他每个页面只需要 http 如何将登录重定向到 https 并将所有其他页面保留在 http 上 任何建议都会很棒 The RequireHt
  • C++11 将工厂声明为基类的友元

    我正在尝试为派生类创建一个工厂 我只希望工厂能够创建派生类的实例 因此我创建了基本构造函数protected 派生类仅使用基类构造函数 因此它们的构造函数是protected also 我试图将工厂声明为基类的友元 以便它可以访问prote
  • CSS3 悬停/点击在移动浏览器中不起作用

    我创建了一个盒子 当鼠标悬停在另一个 div 上时 它会淡出到另一个 div 中 这一切都是使用 CSS3 完成的 然而 我意识到一个问题是悬停在移动浏览器中不起作用 有没有办法以某种方式使其适用于移动设备 或者我是否必须诉诸使用某种 JS
  • 从 Hibernate 映射获取列长度?

    为了验证我收到的数据 我需要确保长度不会超过数据库列的长度 现在所有的长度信息都存储在 Hibernate 映射文件中 是否有办法以编程方式访问这些信息 你可以做到 但这并不容易 您可能希望在启动时执行如下操作并存储值的静态缓存 有很多特殊
  • 从嵌套字典中的项目构造 pandas DataFrame

    假设我有一个嵌套字典 user dict 其结构 Level 1 用户 ID 长整型 Level 2 类别 字符串 Level 3 各种属性 浮点数 整数等 例如 该字典的条目为 user dict 12 Category 1 att 1
  • Java 64位JDK问题

    如果我使用 64 位 JDK 编译一些 java 文件 然后从中创建一个 JAR 文件 生成的 JAR 能否正确地与 32 位 JRE 一起工作 还是我必须使用 32 位 JDK Thanks 生成的 JAR 将正确地与 32 位 JRE
  • preg_match():找不到结束分隔符“^”[重复]

    这个问题在这里已经有答案了 警告 preg match 在第 29 行 functions validations php 中找不到结束分隔符 代码 if preg match mail pat email components 我要编辑什
  • LinqPad - 将 SQL 转换为 Linq 命令

    我最近购买了 LINQPad 希望它能让我将 SQL 语句转换为 LINQ 语句 使用 LINQPad 我可以附加数据库并运行返回我需要的结果的 SQL 语句 但我找不到将该 SQL 语句转换为 LINQ 的 命令 您能否让我知道如何使用
  • 如何在 QT Creator 中推广自定义小部件

    在 qt 5 2 1 中 我创建了一些自定义小部件 例如按钮 传统上有两种方法可以做到这一点 您可以推广现有的小部件 并更改 添加功能 或者从头开始创建自定义小部件 我用过后者 然而 在某些情况下 我想使用我的自定义小部件 但通过升级来更改
  • 为什么 svg 引用带有剪辑路径的元素不起作用?

    实现 SVG 精灵时
  • SQL Server,将命名实例转换为默认实例?

    我需要将 SQL Server 2005 的命名实例转换为默认实例 有没有办法在不重新安装的情况下做到这一点 问题是 六分之二的开发人员安装了命名实例 因此 对于我们其他 4 个人来说 它变成了一个痛苦的改变连接字符串 我正在寻找阻力最小的
  • 正则表达式删除开头的数字和 -

    我正在处理字符串列表 但我想更改字符串 以便它们对用户来说看起来不难看 一个示例列表是 2736162 Magazines 23 2311 Numbers 1 38122 Faces 5 231123 Newspapers 31 31235
  • Javascript和JQuery,如何验证select中是否存在选项元素?

    使用 JQuery 我尝试根据查询字符串在 select 元素中设置一个选项 这个问题类似于this 但是我仍然需要知道如何在执行选择之前检查元素是否存在 否则页面将不断刷新自身 请参阅下面的退出条件 获取查询字符串是使用函数 getPar
  • 当对象的属性被设置时调用函数

    我真的不知道如何解释这一点 但我会向您展示代码并告诉您我想要实现的目标 假设我制作了一个快速对象 var test 然后我为其设置一个属性 我insist在语法上 它不能使用任何函数作为设置器 test hello world 很简单 嗯
  • 数组下标的类型为“char”[-Wchar-subscripts]

    我正在尝试在辅助函数下面的帮助下删除前导 尾随空白字符 编译时我收到警告 数组下标的类型为 char Wchar subscripts 如何摆脱这个消息 char removeSpace char str char end Trim lea
  • jax-ws ri 2.2.1 没有为 amazon ecs wsdl 文件生成枚举

    我正在尝试为以下亚马逊 wsdl 生成工件 http webservices amazon com AWSECommerceService AWSECommerceService wsdl 使用以下 ant 任务
  • 当进程之间进行通信时,队列相对于管道有什么优势?

    使用 2 有什么优点 如果有的话 Queues over a Pipe进程之间进行通信 我打算使用multiprocessing蟒蛇模块 最大的胜利是队列是进程和线程安全的 管道则不然 如果两个不同的进程尝试从管道的同一端读取或写入 就会发
  • Angular2 - APP_BASE_HREF 与 HashLocationStrategy

    我有一个角度应用程序使用带有 HashLocationStrategy 的路由 我需要在主 html 文件中设置不同的值并在路由中设置不同的值 我尝试了这个解决方案 NgModule imports BrowserModule FormsM