【问题标题】:Angular 2 - Remove Hash (#) from the URLAngular 2 - 从 URL 中删除哈希 (#)
【发布时间】:2018-01-23 14:05:59
【问题描述】:

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

我已经尝试过 useHash : false 以及 ProvidersPathLocationStrategy,但我仍然看到了这个问题。

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

【问题讨论】:

标签: angular2-routing


【解决方案1】:

你可以试试这个:

如果您使用的是 Angular final,哈希的原因可能是:

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

或使用这个:

除了模块提供者,检查你的模块导入,也可以通过提供 { useHash: true } 作为 RouterModule.forRoot 的第二个参数来覆盖它:

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

【讨论】:

    【解决方案2】:

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

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

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

    RouterModule.forRoot(routes) 
    

    我猜这是你的:

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

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

    【讨论】:

    • 嗨,李,感谢您的回复。我们在 url 中看到 /#/ 只是加载静态页面本身而没有服务调用。尝试了 useHash: false 但仍然没有运气。我们不确定在 url 中添加 # 到底是什么。我对 Angular 2 很陌生,请帮忙。
    • 我找到了问题所在,我们制作的自定义库正在使用 Hashlocation 策略。感谢您的支持和帮助。
    【解决方案3】:

    你可以试试这个:

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

    或者删除 useHash :

    RouterModule.forRoot( appRoutes );
    

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 1970-01-01
      • 2011-05-29
      • 2012-04-19
      • 2013-05-15
      • 2013-03-02
      • 1970-01-01
      相关资源
      最近更新 更多