2016-04-14 43 views
5

我一直在編寫一個內部工具供開發人員使用由Angular2 beta 15支持的C#WebApi。如何使用Querystring而不是';'

我了Angular2版本,新版本發佈

我一直在用1天的路由,但現在我需要添加可選參數。通常這是通過querystring完成的。

然而,Angular2包括像這樣的查詢字符串之前可選參數:

http://www.example.com;a=b;c=4 

本來我想這將是罰款,即使它是不是我已經習慣了。但是,現在我遇到了需要「潛在危險的Request.Path值」(例如「*」(用於保存具有預填充的正則表達式搜索字段的鏈接))的情況。

我能想到幾個修復包括:

  1. 替換不同的符號* - 意味着開發商必須知道,以便騰出手特殊符號的URL。
  2. Url對參數進行編碼 - 意味着開發人員必須知道url編碼值以釋放url。
  3. 當這些參數有特殊字符時排除這些參數 - 如果開發人員使用*釋放網址,網頁仍然會中斷。
  4. 從預查詢字符串參數切換到查詢字符串參數。
  5. 手動控制查詢字符串。

大多數簡單的正則表達式在沒有編碼的查詢字符串中是完全有效的,這意味着(4)和(5)都是有效的解決方案。

(5)是可能的,但我無法想象我是唯一一個遇到過這個問題的人。如果存在官方解決方案,我寧願不創建我自己的解決方法。

(4)是我的首選解決方案。我發現的許多舊的示例在查詢字符串中顯示可選參數,所以我希望邏輯仍然存在,而分號版本只是默認選項。

是否有可能告訴路由器使用查詢字符串參數而不是現在使用的分號分隔的東西?

我搜索了angular.io和stackoverflow,找不到任何答案或任何人提出這個問題。

謝謝。

回答

1

對於根路由器可選參數在查詢字符串來表示,子路由器將其添加爲矩陣參數(你教什麼)

ROUTING & NAVIGATION

+0

除了消除子路由器,有無論如何關閉矩陣參數? – JALLRED

+0

不,目前不支持。另見https://github.com/angular/angular/issues/7616 –

7

見你可以試試這個:

<a [routerLink]="['/users']" [queryParams]="{q:'ABC', location:2929}">Test</a> 

這會給你一條路線,如http://www.example.com/users?q=ABC&location=2929

好運。

相關問題