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";
- Документы по Angular: https://angular.io/guide/browser-support
- Библиотеки полифиллов: https://github.com/zloirock/core-js
- Проверьте
CommonJS API
раздел о других способах добавления полифиллов
- Проверьте
Caniuse предполагает, что функция "Включает" недоступна.
Однако ниже может помочь.
Взято из этой статьи: 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/, и вы увидите, что ваше приложение работает.