Angular 2 - 从 URL 中删除哈希 (#)

Angular 2 - Remove Hash (#) from the URL

我正在通过 loadChildren("123#childModule")appModule 加载模块,它总是在浏览器中附加 /#/

我已尝试 useHash : false 以及 ProvidersPathLocationStrategy,但我仍然看到问题。

一直在研究这个问题,但到目前为止我还没有找到任何解决方案。任何的想法?提前致谢。

首先,我相信您正在尝试使用模块进行延迟加载 路由代码应该是这样的:

{ path: 'mgt', loadChildren: 'app/your-mgt/your-mgt.module#YourModule'}

而您url上显示的#与此处的“#”无关。
默认情况下,Angular 已经使用 PathLocationStrategy

RouterModule.forRoot(routes) 

我猜这是你的:

RouterModule.forRoot(routes, { useHash: true } or RouterModule.forRoot(routes, { useHash: false }

不确定您的后端是什么,但如果您有后端,它将使用 ajax 来获取数据。 如果您在后端使用 Express。 尝试

你可以试试这个:

如果您使用的是 Angular final,散列的原因可能是:

RouterModule.forRoot(yourRoutesHere, { useHash: true })

或者使用这个:

除了模块提供者,检查你的模块导入,它也可以通过提供 { useHash: true } 作为 RouterModule.forRoot:

的第二个参数来覆盖
imports: [
    ...
    RouterModule.forRoot(routes, { useHash: true })  // remove second argument
]

你可以试试这个:

RouterModule.forRoot(appRoutes, {useHash:false} );

或删除 useHash :

RouterModule.forRoot( appRoutes );