Angular2 IE11 Não é possível obter a propriedade ‘apply’ de referência indefinida ou nula

Estou recebendo o seguinte erro após atualizar meus pacotes angular2 para as seguintes versões:

  • @ angular / comum “:” ^ 2.3.1
  • @ angular / compilador “:” ^ 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 / roteador “:” ^ 3.3.1

Erro : não é Unable to get property 'apply' of undefined or null reference

insira a descrição da imagem aqui

Eu só estou recebendo esse erro no IE11, no Chrome funciona bem.

Eu fiz algumas escavações e a linha que causa o erro está no módulo angular / common:

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

O arquivo typescript:

@ angular / common / src / pipes / intl.ts linha 175

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

O código que chama a function de combine é @ angular / common / src / pipes / intl.ts linha 48:

'yMMMdjms': datePartGetterFactory(combine([


ATUALIZAR

Parece que o erro real é que o método .assign não está implementado no IE11

Se você estiver usando o @angular/cli e pretender oferecer suporte ao IE9-11, poderá editar o arquivo src/polyfills.ts para ativar os polyfills apropriados. Os polyfills necessários já estão no arquivo, portanto, tudo o que você precisa fazer é descomentá-los.

Por padrão, @angular/cli projecta navegadores “evergreen” para fora da checkbox, o que significa que o IE não é imediatamente suportado, mas você pode adicionar suporte importando polyfills para os resources que você precisa.

Angular tem dependência do core-js . Assim, você pode usar polyfills Object.assign a partir dele:

 import "core-js/client/shim"; // or load it before other angular2 & zone.js stuff import "zone.js"; import "reflect-metadata"; 

De acordo com o MDN Object.assign() Compatibilidade do navegador O IE não é suportado.

Você pode importar o Object.assign Object.assign pelo MDN com npm. ( mdn-polyfills )

Executar: npm i mdn-polyfills --save

Use: import 'mdn-polyfills/Object.assign';

É realmente irritante que o tutorial do Angular Materials não mencione esse problema. Qualquer pessoa que esteja usando o IE11 e seguindo seu tutorial, vai encontrar esse problema.

A solução, como outros já mencionaram, é simplesmente descomentar essas linhas no arquivo polyfills.ts do seu projeto.

insira a descrição da imagem aqui

Mas realmente, isso deveria ter sido mencionado em seu tutorial.

Estou gastando horas demais procurando no Google para encontrar soluções para esses problemas angulares …

Para trabalhar no navegador IE

Etapa 1: Executar: npm i mdn-polyfills --save

Etapa 2: Abrir polyfills.ts

Etapa 3: Não Comentários As importações no arquivo em / ** IE9, IE10 e IE11 exigem todos os seguintes polyfills. ** /

no seu polyfills.ts adicionar:

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

se alguém tiver esse erro em um modelo angular do dotnet core 2.0 usando o IE, é assim que eu o resolvi.

  1. instalar o core-js

    npm instalar core-js –save

  2. Adicione esta linha na parte superior do ClientApp / boot.browser.ts

    import ‘core-js / client / shim’;

Se você estiver usando o 4.x angular e encontrar esse erro, a solução descrita em https://github.com/angular/angular-cli/issues/6036 funcionou para mim.

Parece que há um bug com a versão 0.8.8 de “zone.js”. No entanto, o downgrade para a versão 0.8.4 resolveu o problema. Veja o link para mais detalhes.

Correção do Angular 4 IE11 para não conseguir obter a propriedade ‘apply’

Etapa 1: abra o aplicativo / boot-browser-ts

Etapa 2: adicione a linha abaixo

 import 'core-js/client/shim'; 

Parece angular-cli (v1.0.0-rc.0) tem arquivo chamado polyfills.ts em que você tem que descomentar todos os polyfills necessários para os navegadores, Ele funciona bem para mim com instalação zero no IE-11.

Stas Berkov está correto, e sua resposta me levou a uma solução ligeiramente diferente:

No meu header onde eu carrego todos os scripts Angular eu incluí shim.js. (Eu agrupo / diminuto em implantar). Nota importante: é fundamental que o shim.js seja carregado antes de zone.js, caso contrário, você obterá um erro diferente.