角度8:对象不支持属性或方法“包含”

时间:2019-08-05 20:01:32

标签: angular angular8 angular-cli-v8

我正在用angular8构建应用程序。我从事angular5 / 6/7的工作,对于那些应用程序,我没有评论polyfills.ts中存在的导入。对于角度8,它只有3个导入,即classlist.js,web-animation-js和zone.js / dist / zone。我的应用程序在IE中工作正常。但是我开始使用include函数来查看某项是否存在。它在chrome中效果很好。在IE中,它抛出Object不支持属性或方法“ includes”的错误。

4 个答案:

答案 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";

答案 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)

includesArray.prototypeString.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';