最近在用angular寫一個后台的項目,遇到一個小問題。
進入某個路由頁面之后,手動觸發瀏覽器的刷新,然后就404了。。。
翻看Angular的文檔,發現Google早已經給我們想到了這個問題的處理方案
那就是Angular的hash風格的url,就是在瀏覽器的url里面加入一個#號
這樣刷新的話,瀏覽器會忽略url的#號后面的,,等頁面價值完成之后,才會再次處理#號。
如果我沒記錯的話,在非spa網頁程序里面#是用於網頁錨點處理。但是在spa程序里面,#居然還可以這么用,真是佩服Google工程師的腦洞啊
處理方式也很簡單:
在app.module.ts里面引入hash風格的庫
import { HashLocationStrategy, LocationStrategy } from "@angular/common";
然后再放到provider里面去
providers: [ {
provide: LocationStrategy,
useClass: HashLocationStrategy
}]
再次在Vscode里面保存一下,webpack會自動重新編譯並刷新瀏覽器。這時候,url的風格就成了一個帶#的,這時候隨便怎么刷新瀏覽器,都能正常了