【问题标题】:Angular 4 put a global constant available to zone.jsAngular 4 为 zone.js 提供了一个全局常量
【发布时间】:2018-01-23 07:30:08
【问题描述】:

我正在使用带有 typescript 和 zone.js (0.8.4) 的 Angular(我认为是 4)。我通过“polyfills.ts”文件导入 zone.js。当我查看 zone.js 的源代码时,有这样的代码:

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

我的问题是,如何在 _globals 中设置这个变量?

谢谢

【问题讨论】:

标签: angular zone


【解决方案1】:

就我而言,我不得不取消注释 polyfills 文件中的以下行:

(window as any).__Zone_enable_cross_context_check = true;

项目 Angular 版本:Angular 6.0.1

【讨论】:

    【解决方案2】:

    global 是浏览器中的window 对象,如下所示:

    (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 () { 
       ...
    });
    

    所以你可以像这样设置变量:

    window['__Zone_disable_IE_check'] = true;
    

    但您需要在 zone.js 加载之前这样做。如果在index.html 中加载zone.js,添加以下内容:

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

    【讨论】:

    • 也许你可以看看我的相关帖子:stackoverflow.com/questions/45675781/…
    • 我试图将窗口变量放在“polyfills.ts”文件中的区域之前,其中大部分(全部?)JS 生成,我可以看到它(window['__Zone_enable_cross_context_check'] = true;) 在 web 源代码中,put 不起作用。
    • 在所有的 polyfill 加载之前放入 index.html。将其放入 polyfills.ts 将不起作用,因为所有导入都在 polyfills.ts 之前执行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    相关资源
    最近更新 更多