2016-04-14 15 views
5

Ho scritto uno strumento interno per gli sviluppatori che utilizzano Angular2 beta 15 supportato da un C# WebApi.Come usare Querystring invece di ';'

ho la versione Angular2 come vengono rilasciate nuove versioni

ho utilizzato il routing dal giorno 1, ma ora ho bisogno di aggiungere parametri opzionali. In genere ciò avviene tramite la querystring.

Tuttavia, Angular2 include parametri opzionali prima della querystring in questo modo:

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

Originariamente ho pensato che sarebbe bene, anche se non è quello che mi sono abituato. Tuttavia, ora ho riscontrato casi in cui ho bisogno di "valore potenzialmente pericoloso Request.Path" come "*" (per il salvataggio di collegamenti con un campo di ricerca di espressioni regolari precompilato).

mi viene in mente diverse correzioni tra cui:

  1. sostituire un simbolo diverso per * - significa che gli sviluppatori devono conoscere il simbolo speciale al fine di mano libera un URL.
  2. Url codifica i parametri - Significa che gli sviluppatori devono conoscere il valore di codifica dell'URL per liberare a mano un URL.
  3. Escludere quei parametri quando hanno caratteri speciali - la pagina si interrompe ancora se uno sviluppatore libera l'url usando *.
  4. Passaggio da parametri pre-querystring a parametri querystring.
  5. Controllare manualmente la querystring.

Le espressioni regolari più semplici sono perfettamente valide nella QueryString senza codifica, questo significa che sia (4) sia (5) sono soluzioni valide.

(5) è possibile, ma non riesco a immaginare di essere l'unico che ha incontrato questo problema. Preferirei non creare la mia soluzione alternativa se esiste una soluzione ufficiale.

(4) è la mia soluzione preferita. Molti degli esempi precedenti che ho trovato mostrano i parametri opzionali nella querystring, quindi spero che la logica resti ancora e che la versione semi-colon sia semplicemente l'opzione predefinita.

E 'possibile dire al router di usare i parametri di querystring invece delle cose delimitate da punto e virgola che fa ora?

Ho cercato sia angular.io che stackoverflow e non sono riuscito a trovare alcuna risposta o nessuno a fare questa domanda.

Grazie.

risposta

1

Per il router radice parametri opzionali sono rappresentati nel querystring, per i router figlio in essi vengono aggiunti come parametri della matrice (quello che hai mostrato)

Vedi anche ROUTING & NAVIGATION

+0

Oltre a eliminare i router figlio, è comunque necessario disattivare i parametri della matrice? – JALLRED

+0

No, al momento non è supportato. Vedi anche https://github.com/angular/angular/issues/7616 –

7

Si può provare questo:

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

questo vi darà un percorso come http://www.example.com/users?q=ABC&location=2929

Good Luck.

Problemi correlati