我正在用angular8构建应用程序。我从事angular5 / 6/7的工作,对于那些应用程序,我没有评论polyfills.ts中存在的导入。对于角度8,它只有3个导入,即classlist.js,web-animation-js和zone.js / dist / zone。我的应用程序在IE中工作正常。但是我开始使用include函数来查看某项是否存在。它在chrome中效果很好。在IE中,它抛出Object不支持属性或方法“ includes”的错误。
答案 0 :(得分:3)
对于Angular 8+,他们默认添加了差分加载;现代浏览器(如Chrome和FF)将加载与es2015兼容的JS文件,而旧版浏览器(如IE11)将加载另一个但功能相同的es5 JS文件。
为了使polyfill进入es5文件(由IE11加载),您需要将其手动添加到src/polyfills.ts
文件中。
// Only load the 'includes' polyfill
import 'core-js/features/array/includes';
或者您也可以添加所有polyfill:
// polyfill all `core-js` features:
import "core-js";
CommonJS API
部分,了解其他添加polyfill的方法答案 1 :(得分:0)
狗提示“包含”功能不可用。
https://caniuse.com/#search=includes
但是以下内容可能会有所帮助。
摘自本文:https://blog.angularindepth.com/angular-and-internet-explorer-5e59bb6fb4e9
治愈
要使IE正常工作,我们需要完成两个步骤:
取消注释polyfill.ts文件中的某些导入。安装几个 npm软件包。 Polyfill导入首先在IDE或文本中打开文件 编辑器:ie-test \ src \ polyfills.ts
取消注释其中的所有导入行。对我来说,简单的方法就是 用import替换所有// import
那颗地雷看起来像这样:
安装npm安装注意,其中有一些npm install命令 评论。如果您使用的是早期版本的Angular CLI, 也可能是第三个。对于Angular CLI版本7、6和1.7,您 需要运行:
npm install --save classlist.js npm install --save web-animations-js 成功现在,在项目的根目录中运行:
ng在http://localhost:4200处提供Point Internet Explorer,您 将会看到您的应用程序正常运行。
答案 2 :(得分:0)
includes
是Array.prototype
和String.prototype
中存在的功能,IE不支持。您需要使用如下所示的polyfill:
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}
或类似的数组。您也可以检查Core.js中是否有填充
答案 3 :(得分:0)
在polyfill.js
中添加以下行:
import 'core-js/es7/array';