Map-like representation of url search parameters, based on URLSearchParams in the url living standard, with several extensions for merging URLSearchParams objects:
This class accepts an optional second parameter of $QueryEncoder, which is used to serialize parameters before making a request. By default, QueryEncoder encodes keys and values of parameters using encodeURIComponent, and then un-encodes certain characters that are allowed to be part of the query according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.
These are the characters that are not encoded: ! $ \' ( ) * + , ; A 9 - . _ ~ ? /
If the set of allowed query characters is not acceptable for a particular backend, QueryEncoder can be subclassed and provided as the 2nd argument to URLSearchParams.
import {URLSearchParams, QueryEncoder} from '@angular/http'; class MyQueryEncoder extends QueryEncoder { encodeKey(k: string): string { return myEncodingFunction(k); } encodeValue(v: string): string { return myEncodingFunction(v); } } let params = new URLSearchParams('', new MyQueryEncoder());