Angular 8: объект не поддерживает свойство или метод "включает"

Я создаю приложение в angular8. Я работал над angular5/6/7 и для этих приложений я раскомментировал импорт, который существует в polyfills.ts. Для углового 8 он имеет только 3 импорта, т.е. classlist.js, web-animation-js и zone.js/dist/zone. Мое приложение работает нормально в IE. Но я начал использовать функцию include, чтобы увидеть, существует ли элемент. Работает нормально в хроме. В IE он выдает объект не поддерживает свойство или метод "включает" ошибку.

2 ответа

Решение

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 на polyfills

В polyfill.js добавьте строку ниже:

import 'core-js/es7/array';

Что касается Angular 8+, по умолчанию добавлена ​​дифференциальная загрузка; где современные браузеры (например, Chrome и FF) загружают JS-файл, совместимый с es2015, а устаревшие браузеры (например, IE11) загружают другой, но такой же функционирующий JS-файл es5.

Чтобы добавить полифиллы в ваш файл es5 (который будет загружен IE11), вам необходимо вручную добавить их в src/polyfills.ts файл.

// Only load the 'includes' polyfill
import 'core-js/features/array/includes';

Или вы можете просто добавить все полифиллы:

// polyfill all `core-js` features:
import "core-js";

Caniuse предполагает, что функция "Включает" недоступна.

https://caniuse.com/

Однако ниже может помочь.

Взято из этой статьи: https://blog.angularindepth.com/angular-and-internet-explorer-5e59bb6fb4e9

Лечение

Чтобы заставить IE работать, нам нужно сделать два основных шага:

Откомментируйте некоторые операции импорта в файле polyfill.ts. Установите пару пакетов npm. Импорт Polyfill Сначала откройте файл в вашей IDE или текстовом редакторе: ie-test\src\polyfills.ts

Откомментируйте все строки импорта там. Для меня самый простой способ - просто заменить все // импорт на импорт

После этого моя выглядит так:

Install npm Pacakages Обратите внимание, что в комментариях есть несколько команд установки npm. Если вы используете более раннюю версию Angular CLI, может быть и третья. Для Angular CLI версий 7, 6 и 1.7 вам нужно запустить:

npm install --save classlist.js npm install --save web-animations-js Успех Теперь в корне вашего проекта просто запустите:

Отправьте Internet Explorer по адресу: http://localhost:4200/, и вы увидите, что ваше приложение работает.

Другие вопросы по тегам