fix(UrlSearchParams): change a behavior when a param value is null or undefined (#11990)

This commit is contained in:
alexbyk 2016-09-30 19:57:26 +03:00 committed by Chuck Jazdzewski
parent c143fee849
commit bf7b82b658
2 changed files with 23 additions and 0 deletions

View File

@ -102,6 +102,10 @@ export class URLSearchParams {
getAll(param: string): string[] { return this.paramsMap.get(param) || []; } getAll(param: string): string[] { return this.paramsMap.get(param) || []; }
set(param: string, val: string) { set(param: string, val: string) {
if (val === void 0 || val === null) {
this.delete(param);
return;
}
const list = this.paramsMap.get(param) || []; const list = this.paramsMap.get(param) || [];
list.length = 0; list.length = 0;
list.push(val); list.push(val);
@ -124,6 +128,7 @@ export class URLSearchParams {
} }
append(param: string, val: string): void { append(param: string, val: string): void {
if (val === void 0 || val === null) return;
const list = this.paramsMap.get(param) || []; const list = this.paramsMap.get(param) || [];
list.push(val); list.push(val);
this.paramsMap.set(param, list); this.paramsMap.set(param, list);

View File

@ -149,5 +149,23 @@ export function main() {
expect(paramsC.toString()).toEqual('a=2&q=4%2B&c=8'); expect(paramsC.toString()).toEqual('a=2&q=4%2B&c=8');
}); });
it('should remove the parameter when set to undefined or null', () => {
const params = new URLSearchParams('q=Q');
params.set('q', undefined);
expect(params.has('q')).toBe(false);
expect(params.toString()).toEqual('');
params.set('q', null);
expect(params.has('q')).toBe(false);
expect(params.toString()).toEqual('');
});
it('should ignore the value when append undefined or null', () => {
const params = new URLSearchParams('q=Q');
params.append('q', undefined);
expect(params.toString()).toEqual('q=Q');
params.append('q', null);
expect(params.toString()).toEqual('q=Q');
});
}); });
} }