Angular2 IE11 Imansible ottenere la proprietà ‘apply’ di riferimento non definito o null

Ricevo il seguente errore dopo aver aggiornato i miei pacchetti angular2 alle seguenti versioni:

  • @ 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

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

inserisci la descrizione dell'immagine qui

Ricevo solo questo errore in IE11, in Chrome funziona perfettamente.

Ho fatto un po ‘di scavo e la linea che causa l’errore si trova nel modulo angular / comune:

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

Il file typescript:

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

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

Il codice che chiama la funzione di combine è @ angular / comune / src / pipes / intl.ts linea 48:

'yMMMdjms': datePartGetterFactory(combine([


AGGIORNARE

Sembra che l’errore reale sia che il metodo .assign non è implementato in IE11

Se si utilizza @angular/cli angular @angular/cli e si intende supportare IE9-11, è ansible modificare il file src/polyfills.ts per abilitare i polyfill appropriati. I polyfill richiesti sono già nel file, quindi tutto ciò che devi fare è non commentarli.

Per impostazione predefinita, i progetti @angular/cli indirizzano i browser “sempreverdi” fuori dalla scatola, il che significa che IE non è immediatamente supportato, ma è ansible aggiungere supporto importando i polyfill per le funzionalità necessarie.

Angular ha dipendenza da core-js . In questo modo è ansible utilizzare Object.assign polyfill da esso:

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

Secondo MDN Object.assign() compatibilità del browser IE non è supportata.

È ansible importare il polyfill Object.assign da MDN con npm. ( mdn-polyfills )

Esegui: npm i mdn-polyfills --save

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

È davvero fastidioso che il tutorial sui materiali angolari non menzioni questo problema. Chiunque utilizzi IE11 e seguirà il proprio tutorial risolverà questo problema.

La soluzione, come altri hanno già accennato, consiste semplicemente nel decommentare quelle righe nel file polyfills.ts del tuo progetto.

inserisci la descrizione dell'immagine qui

Ma davvero, questo dovrebbe essere stato menzionato nel loro tutorial.

Sto trascorrendo troppe ore su Google per trovare soluzioni a questi problemi angolari …

Lavorare nel browser IE

Passaggio 1: Esegui: npm i mdn-polyfills --save

Passaggio 2: Apri polyfills.ts

Passaggio 3: Annulla le importazioni nel file in / ** IE9, IE10 e IE11 richiede tutti i seguenti polyfill. ** /

al tuo polyfills.ts aggiungi:

 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 qualcuno ha ottenuto questo errore in un modello angular 2.0 core dotnet usando IE, questo è il modo in cui l’ho risolto.

  1. installa core-js

    npm installa core-js –save

  2. Aggiungi questa riga nella parte superiore di ClientApp / boot.browser.ts

    importare ‘core-js / client / shim’;

Se si utilizza 4.x angular e si riscontra questo errore, la soluzione descritta in https://github.com/angular/angular-cli/issues/6036 ha funzionato per me.

Sembra che ci sia un bug con la versione 0.8.8 di “zone.js”. Tuttavia, il downgrade alla versione 0.8.4 ha risolto il problema. Vedi il link per maggiori dettagli.

Correzione angular 4 IE11 per impossibilità di ottenere la proprietà ‘apply’

Passaggio 1: apri app / boot-browser-ts

Passaggio 2: aggiungi la riga sottostante

 import 'core-js/client/shim'; 

Sembra che angular-cli (v1.0.0-rc.0) abbia un file chiamato polyfills.ts in cui è necessario annullare il commento di tutti i polyfill richiesti per i browser. Funziona bene con zero installazioni in IE-11.

Stas Berkov ha ragione e la sua risposta mi ha portato a una soluzione leggermente diversa:

Nel mio header, dove carico tutti gli script Angular che ho incluso shim.js. (I bundle / minified on deploy). Nota importante: è importante caricare shim.js prima di zone.js, altrimenti si ottiene un errore diverso.