为了账号安全,请及时绑定邮箱和手机立即绑定

Angular 2从网址中删除哈希(#)

Angular 2从网址中删除哈希(#)

素胚勾勒不出你 2019-12-27 15:20:13
我正在尝试从Angular 2的URL中删除#号,但找不到如何在不产生任何问题的情况下删除它的任何好的解释。我记得在AngularJS 1上添加起来比较容易 $locationProvider.html5Mode(true);如果您能告诉我这是否是一种好习惯(删除#)或可能会影响应用程序的SEO(或对其进行改进),我也将不胜感激。PS:我正在将Angular 2与打字稿一起使用
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

在角度上有定位策略


查看app.module.ts在哪里启动应用程序


@NgModule({

.......

  providers: [

....

    { provide: LocationStrategy, useClass: HashLocationStrategy },

....

]

});

并删除此部分,因为PathLocationStrategy是默认策略


查看完整回答
反对 回复 2019-12-27
?
冉冉说

TA贡献1877条经验 获得超1个赞

上面的答案具有从URL中删除哈希的正确解释,但是当您更改LocationStrategy后端时,后端将无法理解所有Angular 2路由,因此会受到影响。以下是在后端支持下删除哈希的步骤。


1)更改Angular以使用PathLocationStrategy


@NgModule({

  .....

  providers: [

    // Below line is optional as default LocationStrategy is PathLocationStrategy

    {provide: LocationStrategy, useClass: PathLocationStrategy} 

  ]

})

2)在index.html中更改基准Href,Angular2将处理基准Href之后的所有路由


<base href="/app-context/">

例如


<base href="/app/">

3)在后端服务器上,对于任何以下格式的请求,我们都必须呈现index.html文件


"/app/**" - Render index.html for any request coming with "/app/**" pattern

index.html


<!doctype html>

<html>

  <head>

    <meta charset="utf-8">

    <title>My App</title>

    <base href="/app/">

  </head>

  <body>

    <app-root>Loading...</app-root>

    <script type="text/javascript" src="vendor.bundle.js"></script>

    <script type="text/javascript" src="main.bundle.js"></script>

  </body>

</html>


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 377 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信