From c2ed6e21d6c525e5da14c8a24278bba5dd9253e1 Mon Sep 17 00:00:00 2001 From: "JiaLi.Passion" Date: Tue, 22 May 2018 23:49:02 +0900 Subject: [PATCH] feat(Core): fix #910, add a flag to allow user to ignore duplicate Zone error --- lib/zone.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/zone.ts b/lib/zone.ts index 9cbd04fdc..1e4fd2d07 100644 --- a/lib/zone.ts +++ b/lib/zone.ts @@ -645,7 +645,19 @@ const Zone: ZoneType = (function(global: any) { } mark('Zone'); if (global['Zone']) { - throw new Error('Zone already loaded.'); + if (global[('__zone_symbol__ignoreDuplicateZoneCheck')] === true && typeof global['Zone'].__symbol__ === 'function') { + // if global['Zone'] already exists (maybe zone.js was already loaded or + // some other lib also registered a global object named Zone), we may need + // to throw an error, but sometimes user may not want this error. + // For example, + // we have two web pages, page1 includes zone.js, page2 doesn't. + // and the 1st time user load page1 and page2, everything work fine, + // but when user load page2 again, error occurs because global['Zone'] already exists. + // so we add a flag to let user choose whether to throw this error or not. + return; + } else { + throw new Error('Zone already loaded.'); + } } class Zone implements AmbientZone {