如何讓 routing 不區分大小寫

大家好!!

最近遇到一個問題路徑大小寫的問題

  1. /a/Create?ID=1
  2. /b/create?ID=2
  3. /c/Create?ID=3

Create or create 這個路徑是存在資料庫(歷史包袱)。

舊網站是不會區分大小寫,所以存入資料庫沒有一定規律,但改寫成 Angular 時,路由會區分大小寫。

目前看了一些解決方式都是整個網址都轉小寫,但不太符合我的需求,不知道 Angular 有沒有什麼參數 ( 類似 AngularJs 的 caseInsensitiveMatch ),或是哪個地方可以自己改寫路由的比對?

網址本來預設就是 case sensitive. 如果真的要處理這種 case, 就變成自己要在程式端動
這部分要改寫 UrlSerializer 的部分

類似這樣的概念,但其中有很多細節就要留意了

import { DefaultUrlSerializer, UrlTree } from '@angular/router';

export class LowerCaseUrlSerializer extends DefaultUrlSerializer {
    parse(url: string): UrlTree {
       
        return super.parse(url.toLowerCase()); 
    }
}

在 root module 的地方註冊成自己的

providers: [
  {
    provide: UrlSerializer,
    useClass: LowerCaseUrlSerializer
  }]

這方式之前有嘗試過,但他是把整個網址都轉成小寫,像是
/a/Create?ID=1 => /a/create?id=1

最後選擇還是用資料面的 mapping 解決 :sweat_smile: