diff --git a/packages/common/http/src/params.ts b/packages/common/http/src/params.ts index b82b6577153..525f655ccba 100644 --- a/packages/common/http/src/params.ts +++ b/packages/common/http/src/params.ts @@ -44,7 +44,7 @@ export class HttpUrlEncodingCodec implements HttpParameterCodec { * @returns The encoded key name. */ encodeKey(key: string): string { - return standardEncoding(key); + return standardEncoding(key, KEY_ENCODING_REPLACEMENTS); } /** @@ -53,7 +53,7 @@ export class HttpUrlEncodingCodec implements HttpParameterCodec { * @returns The encoded value. */ encodeValue(value: string): string { - return standardEncoding(value); + return standardEncoding(value, VALUE_ENCODING_REPLACEMENTS); } /** @@ -100,22 +100,24 @@ function paramParser(rawParams: string, codec: HttpParameterCodec): Map { const body2 = new HttpParams({fromString: 'a=1 2 3&b=mail@test&c=3_^[]$&d=eq=1&e=1+1'}); expect(body2.toString()).toEqual('a=1%202%203&b=mail@test&c=3_%5E%5B%5D$&d=eq=1&e=1%2B1'); }); + + it('should keep `=` encoded in a key so the pair round-trips', () => { + const body = new HttpParams().set('filter=admin', 'true'); + expect(body.toString()).toEqual('filter%3Dadmin=true'); + + const reparsed = new HttpParams({fromString: body.toString()}); + expect(reparsed.keys()).toEqual(['filter=admin']); + expect(reparsed.get('filter=admin')).toEqual('true'); + }); }); describe('toString', () => {