Angular 2/4/5在IE11中无效

我试图找出为什么我的角度2应用程序在IE 11中运行时显示正在加载…

根据某人的建议,我尝试过这个有关堆栈溢出的人,在Chrome和IE 11上发布.在Chrome上工作正常,但在IE 11上失败.同样的错误,坚持说“正在加载…”

吸管是:
https://plnkr.co/edit/6zVFbrH5yohwc714gBbk?p=preview

<!DOCTYPE html>
<html>
  <head>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <title>Router Sample</title>
    <link rel="stylesheet" href="style.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.34.2/es6-shim.min.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.1/angular2-polyfills.js"></script>
    <script src="https://code.angularjs.org/tools/system.js"></script>
    <script src="https://code.angularjs.org/tools/typescript.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.1/Rx.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.1/angular2.dev.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.1/http.dev.js"></script>
    <script>
      System.config({
        transpiler: 'typescript', 
        typescriptOptions: { emitDecoratorMetadata: true }, 
        packages: {'src': {defaultExtension: 'ts'}} 
      });
      System.import('src/boot')
            .then(null, console.error.bind(console));
    </script>
  </head>

  <body>
    <my-app>loading...</my-app>
  </body>

</html>

任何人都知道为什么IE 11无法运行角度2应用程序?

谢谢!

最佳答案
最新版本的angular默认只为常绿浏览器设置…

The current setup is for so-called “evergreen” browsers; the last versions of browsers that automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
This also includes firefox, although not mentioned.

有关浏览器支持的更多信息以及特定浏览器的建议填充列表,请参见此处. https://angular.io/guide/browser-support#polyfill-libs

这意味着您必须手动启用正确的polyfill才能使Angular在IE11及更低版本中正常工作.

要实现这一点,请进入polyfills.ts(默认情况下在src文件夹中),然后取消注释以下导入:

/***************************************************************************************************
 * BROWSER POLYFILLS
 */

/** 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/set';

请注意,注释实际上在文件中,因此很容易找到.

如果您仍然遇到问题,可以将目标属性降级为tsconfig.json中的es5,如@MikeDub所示.这样做是将任何es6定义的编译输出更改为es5定义.例如,胖箭头函数(()=> {})将被编译为匿名函数(function(){}).您可以找到支持es6的浏览器列表here.

笔记

•@jackOfAll在评论中询问我是否加载了IE11 polyfill,即使用户位于不需要它们的常绿浏览器中也是如此.答案是,是的,他们是!自2017年8月8日起,包含IE11 polyfill将使您的polyfill文件从~162KB到~258KB.我已经投入试图解决这个问题,但目前似乎不可能.

•如果您在IE10及以下版本中遇到错误,请进入package.json并将webpack-dev-server降级为2.7.1.高于此版本的版本不再支持“较旧”的IE版本.

转载注明原文:Angular 2/4/5在IE11中无效 - 代码日志