如何让Angular在运行IE 9的HTA中工作?

时间:2017-11-09 13:31:26

标签: javascript angular internet-explorer-9 ecmascript-5 hta

我需要开发HTML application(HTA)来解决业务问题。我认为在引擎盖下使用Angular可以大大简化开发。

我已经通过ng new创建了一个新的Angular项目并进行了一些小改动(详见下文),但是当我运行构建的HTA文件时,我收到此错误:

  

错误:' console'未定义

并且页面永远不会加载到HTA窗口中。

HTA使用IE 9(应用程序的要求阻止使用以后的浏览器版本),因此应用程序包含此元标记:

<meta http-equiv="X-UA-Compatible" content="IE=9">

Angular's documentation states that IE 9 is supported如果我取消注释polyfills.ts中所有必要的polyfill,我已经完成了:

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';

我已将收录的index.html文件重命名为index.hta,并在.angular-cli.json中进行了相应的更改。

我已尝试将以下代码直接放入polyfills.ts以规避丢失的console

if (!window.console) console = {error: function() {}};

然后我根本无法建立,因为它不像我重新定义console

ERROR in src/polyfills.ts(77,22): error TS2322: Type '{ error: () => void; }' is not assignable to type 'Console'.
  Property 'assert' is missing in type '{ error: () => void; }'.

有人可以从这里建议前进的方式吗?

1 个答案:

答案 0 :(得分:0)

我通过在<app-root></app-root>的{​​{1}}行下添加以下代码解决了这个问题:

index.hta

当我双击HTA文件时,我现在得到“欢迎使用应用程序!”屏幕。

似乎Angular的构建过程并不像主页中声明的JavaScript一样紧密。