我试图从Angular 2中的url中删除#符号,但我找不到任何关于如何删除它而不产生任何问题的好解释.

我记得在AngularJS 1上,加$locationProvider.html5Mode(true);更容易

另外,如果您能告诉我这是否是一个好的做法(删除#),或者可能会影响应用程序的SEO(或改进它),我将不胜感激.

PS:我正在使用Angular 2和typescript

推荐答案

正如@Volodymyr-Bilyachat所指出的,PathLocationStrategy在Angular2中是默认的location strategy,如果#出现在url中,那么它一定在某个地方被覆盖了.

除了模块提供程序之外,请判断模块导入,还可以通过提供{ useHash: true }作为RouterModule.forRoot的第二个参数来覆盖它:

imports: [
    ...
    RouterModule.forRoot(routes, { useHash: true })  // remove second argument
]

还请注意,当使用PathLocationStrategy时,您需要将web服务器配置为为为所有请求的位置提供index.html(应用程序的入口点).

下面是一些流行web服务器的配置示例:https://angular.io/guide/deployment#fallback-configuration-examples

Typescript相关问答推荐

无需刷新即可让现场访客逆变

Typescript对每个属性具有约束的通用类型

如何使用泛型类型访问对象

Redux—Toolkit查询仅在不为空的情况下添加参数

如何将类型从变量参数转换为返回中的不同形状?

对数组或REST参数中的多个函数的S参数进行类型判断

TypeScrip 5.3和5.4-对`Readonly<;[...number[],字符串]>;`的测试版处理:有什么变化?

打字类型保护递归判断

在类型脚本中的泛型类上扩展的可选参数

以Angular 自定义快捷菜单

如何将对象数组中的键映射到另一种对象类型的键?

基于泛型的条件接口键

在打字应用程序中使用Zod和Reaction-Hook-Forms时显示中断打字时出错

如何在具有嵌套数组的接口中允许新属性

Cypress-验证别名的存在或将别名中的文本与';if';语句中的字符串进行比较

对于VUE3,错误XX不存在于从不存在的类型上意味着什么?

作为参数的KeyOf变量的类型

有没有办法在Reaction组件中动态导入打字脚本`type`?

Route.ts文件中未导出HTTP方法

在类型{}上找不到带有string类型参数的索引签名 - TypeScript