Angular 4 put a global constant available to zone.

2020-05-27 11:22发布

问题:

i am using Angular (4 i think) with typescript and zone.js (0.8.4). I import zone.js via the "polyfills.ts" file. When I look inside the source code of zone.js, there is code like this:

var isDisableIECheck = _global['__Zone_disable_IE_check'] || false;

My question is, how can I set this variable in _globals ?

Thanks

回答1:

global is window object in a browser as can be seen here:

(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
    typeof define === 'function' && define.amd ? define(factory) :
    (factory());
}(this,    <------------ `this` points to `window` in global scope
 (function () { 
   ...
});

so you can set the variable like this:

window['__Zone_disable_IE_check'] = true;

But you need to do that before zone.js is loaded. If you load zone.js in index.html, add the following:

<script>
    window['__Zone_disable_IE_check'] = true;
</script>
<script src="node_modules/zone.js/dist/zone.js"></script>


回答2:

In my case, I have had to uncomment the following line in the polyfills file:

(window as any).__Zone_enable_cross_context_check = true;

Project Angular version: Angular 6.0.1



标签: angular zone