...
|
...
|
@@ -410,9 +410,23 @@ export class UtilsService { |
410
|
410
|
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
411
|
411
|
}
|
412
|
412
|
|
|
413
|
+ public removeQueryParams(keys: Array<string>) {
|
|
414
|
+ let params = this.window.location.search;
|
|
415
|
+ for (const key of keys) {
|
|
416
|
+ params = this.updateUrlQueryString(params, key, null);
|
|
417
|
+ }
|
|
418
|
+ const baseUrlPart = [baseUrl(), this.window.location.pathname].join('');
|
|
419
|
+ this.window.history.replaceState({}, '', baseUrlPart + params);
|
|
420
|
+ }
|
|
421
|
+
|
413
|
422
|
public updateQueryParam(name: string, value: string | null) {
|
414
|
423
|
const baseUrlPart = [baseUrl(), this.window.location.pathname].join('');
|
415
|
424
|
const urlQueryString = this.window.location.search;
|
|
425
|
+ const params = this.updateUrlQueryString(urlQueryString, name, value);
|
|
426
|
+ this.window.history.replaceState({}, '', baseUrlPart + params);
|
|
427
|
+ }
|
|
428
|
+
|
|
429
|
+ private updateUrlQueryString(urlQueryString: string, name: string, value: string | null): string {
|
416
|
430
|
let newParam = '';
|
417
|
431
|
let params = '';
|
418
|
432
|
if (value !== null) {
|
...
|
...
|
@@ -425,13 +439,16 @@ export class UtilsService { |
425
|
439
|
newParam = '$1' + newParam;
|
426
|
440
|
}
|
427
|
441
|
params = urlQueryString.replace(keyRegex, newParam);
|
|
442
|
+ if (params.startsWith('&')) {
|
|
443
|
+ params = '?' + params.substring(1);
|
|
444
|
+ }
|
428
|
445
|
} else if (newParam) {
|
429
|
446
|
params = urlQueryString + '&' + newParam;
|
430
|
447
|
}
|
431
|
448
|
} else if (newParam) {
|
432
|
449
|
params = '?' + newParam;
|
433
|
450
|
}
|
434
|
|
- this.window.history.replaceState({}, '', baseUrlPart + params);
|
|
451
|
+ return params;
|
435
|
452
|
}
|
436
|
453
|
|
437
|
454
|
public baseUrl(): string {
|
...
|
...
|
|