From f0733d109ecb5e47bebe787b217795b037728efb Mon Sep 17 00:00:00 2001 From: Alison Gale Date: Tue, 19 Jan 2021 11:49:04 -0800 Subject: [PATCH] fix(router): Fix occasional error when creating url tree in IE 11 and Edge (#40488) For the Google Cloud Console within Google we observed errors in the shallowEqual function for users in IE and Edge. This patch was made within Google and the errors went away. This commit upstreams the change into Angular. PR Close #40488 --- packages/router/src/utils/collection.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/router/src/utils/collection.ts b/packages/router/src/utils/collection.ts index 768a0f19a4..57d923804a 100644 --- a/packages/router/src/utils/collection.ts +++ b/packages/router/src/utils/collection.ts @@ -20,12 +20,10 @@ export function shallowEqualArrays(a: any[], b: any[]): boolean { } export function shallowEqual(a: Params, b: Params): boolean { - // Casting Object.keys return values to include `undefined` as there are some cases - // in IE 11 where this can happen. Cannot provide a test because the behavior only - // exists in certain circumstances in IE 11, therefore doing this cast ensures the - // logic is correct for when this edge case is hit. - const k1 = Object.keys(a) as string[] | undefined; - const k2 = Object.keys(b) as string[] | undefined; + // While `undefined` should never be possible, it would sometimes be the case in IE 11 + // and pre-chromium Edge. The check below accounts for this edge case. + const k1 = a ? Object.keys(a) : undefined; + const k2 = b ? Object.keys(b) : undefined; if (!k1 || !k2 || k1.length != k2.length) { return false; }