亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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條經驗 獲得超3個贊

在角度上有定位策略


查看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 關注
  • 420 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號