Angular2 IE11 не удается получить свойство "применить" неопределенной или нулевой ссылки


Я получаю следующую ошибку после обновления моих пакетов angular2 до следующих версий:

  • @angular / common": "^2.3.1
  • @angular / compiler": "^2.3.1
  • @angular / core": "^2.3.1
  • @angular / forms": "^2.3.1
  • @angular / http": "^2.3.1
  • @angular / platform-browser": "^2.3.1"
  • @angular / platform-browser-dynamic": "^2.3.1
  • @ angular / platform-server": "^2.3.1
  • @angular / router": "^3.3.1

:Unable to get property 'apply' of undefined or null reference

Я только получаю эту ошибку в IE11, в Chrome он отлично работает.

Я немного покопался, и линия, которая вызывает ошибку, находится в угловом / общем модуле:

function combine(options) {
  return (_a = ((Object))).assign.apply(_a, [{}].concat(options));
  var _a;
}

файл машинописного текста:

@angular/common/src/pipes / intl.ТС строка 175

function combine(options: Intl.DateTimeFormatOptions[]): Intl.DateTimeFormatOptions {
  return (<any>Object).assign({}, ...options);
}

код звонит в - это @angular/common/src/pipes / intl.ТС строка 48:

'yMMMdjms': datePartGetterFactory(combine([


обновление

кажется, что фактическая ошибка заключается в том, что .assign метод не реализован в IE11

11 64

11 ответов:

Если вы используете @angular/cli и намерены поддерживать IE9-11 вы можете редактировать src/polyfills.ts файл для включения соответствующих полифилл. Необходимые полифиллы уже находятся в файле, поэтому все, что вам нужно сделать, это не комментировать их.

по умолчанию @angular/cli проекты нацелены на" вечнозеленые " браузеры из коробки, что означает, что IE не поддерживается сразу, но вы можете добавить поддержку, импортируя полифайлы для необходимых вам функций.

угловой имеет зависимость от core-js. Таким образом, вы можете использовать

по данным MDN Object.assign() совместимость с браузерами IE не поддерживается.

вы можете импортировать Object.assign polyfill by MDN С НПМ. (mdn-polyfills)

Run: npm i mdn-polyfills --save

использование: import 'mdn-polyfills/Object.assign';

Это действительно раздражает, что угловые материалы учебник не упоминает эту проблему. Любой, кто использует IE11 и следуя их учебник ударит по этой проблеме.

решение, как уже упоминалось, состоит в том, чтобы просто раскомментировать эти строки в вашем проекте .

enter image description here

но на самом деле, это должно было быть упомянуто в учебнике.

Я провожу слишком много часов в Гугле, чтобы найти решения этих угловых задач...

для работы в браузере IE

Шаг 1:Run:npm i mdn-polyfills --save

Шаг 2: открытьpolyfills.ts

Шаг 3: раскомментировать для импорта в файл под / * * IE9, IE10 и IE11 требуются все следующие полифиллы. ** /

на ваших полифилл.ТС добавлю:

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';

Если кто-то получил эту ошибку в угловом шаблоне dotnet core 2.0 с помощью IE, вот как я ее разрешил.

  1. установить core-js

    npm install core-js --save

  2. добавьте эту строку в верхней части ClientApp / boot.браузер.ТС

    импорт 'core-js / client / shim';

Если вы используете угловой 4.x и наткнуться на эту ошибку, то решение, описанное вhttps://github.com/angular/angular-cli/issues/6036 работал на меня.

похоже, что есть ошибка с версией 0.8.8 " зоны.js". Однако понижение до версии 0.8.4 решило проблему. См. ссылку для получения более подробной информации.

Angular 4 IE11 fix for unable to get property 'apply'

Шаг 1: Откройте приложение / boot-browser-ts

Шаг 2: Добавьте нижеприведенную строку

import 'core-js/client/shim'; 

кажется, угловые-интерфейс командной строки(В1.0.0-радиоуправляемый.0) имеет файл под названием polyfills.ts, в котором вы должны отменить все необходимые polyfills для браузеров, он хорошо работает для меня с нулевой установкой в IE-11.

Стас Берков прав, и его ответ привел меня к несколько иному решению:

в моем заголовке, где я загружаю все угловые скрипты, которые я включил shim.js. (Я связываю / минимизирую при развертывании). Большое Примечание: это очень важно, что прокладка.js будет загружен перед зоной.js, в противном случае вы получите другую ошибку.

<script src="/<my domain>/node_modules/core-js/client/shim.js"></script>
<script src="/<my domain>/node_modules/zone.js/dist/zone.js"></script>
<script src="/<my domain>/node_modules/reflect-metadata/Reflect.js"></script>
<script src="/<my domain>/node_modules/systemjs/dist/system.src.js"></script>

<script src="/<my domain>/systemjs.config.js"></script>