IE11中的Angular 4错误

时间:2017-09-04 11:31:38

标签: angular

我有一个在Chrome上成功运行的Angular 4项目。 但是它没有加载到IE11上,并在polyfills.bundle.js中出现以下错误(我使用命令“ng build --env = prod”构建网站):

var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');

iterFn在此处未定义,因此会引发错误。 请指教。

3 个答案:

答案 0 :(得分:48)

为了更好地支持IE11,您需要在polyfill中添加一些es6导入。清单如下:

HerbadgeRepository.class.getGenericInterfaces()[0].getTypeName()

答案 1 :(得分:2)

@Sumit回答了需要将这些导入添加到polyfill.ts文件中:

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';

另外,您需要导入反映API:

/** IE10 and IE11 requires the following for the Reflect API. */

 import 'core-js/es6/reflect';

/** Evergreen browsers require these. **/

// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators),you 
//can remove.

import 'core-js/es7/reflect';

此外,如果您在项目中使用Angular材质动画,则必须导入Web动画以使Angular材质在IE上正常运行。

import 'web-animations-js';  // Run `npm install --save web-animations-js`.

最后但并非最不重要的一个非常重要的库,可以正常运行IE上的Angular项目:

/** IE10 and IE11 requires the following for NgClass support on SVG elements */
import 'classlist.js';  // Run `npm install --save classlist.js`

答案 2 :(得分:0)

我有相同的错误,此特定错误需要数组类。为了使我的库更小,我只导入了数组类。在那之后,我遇到了另一个错误,该错误需要经常使用的字符串类,因此我首先将这两个类引入。我有点极简主义者,所以我不想在需要时再引入其他类。

import 'core-js/es6/array';
import 'core-js/es6/string';