javascript - nulo - no se puede obtener la propiedad toggle de referencia nula o sin definir
Angular2 IE11 No se puede obtener la propiedad ''aplicar'' de referencia indefinida o nula (11)
Recibo el siguiente error después de actualizar mis paquetes angular2 a las siguientes versiones:
- @ angular / común ":" ^ 2.3.1
- @ angular / compilador ":" ^ 2.3.1
- @ angular / núcleo ":" ^ 2.3.1
- @ angular / formas ":" ^ 2.3.1
- @ angular / http ":" ^ 2.3.1
- @ angular / platform-browser ":" ^ 2.3.1 "
- @ angular / platform-browser-dynamic ":" ^ 2.3.1
- @ angular / plataforma-servidor ":" ^ 2.3.1
- @ angular / enrutador ":" ^ 3.3.1
Error
:
Unable to get property ''apply'' of undefined or null reference
Solo recibo este error en IE11, en Chrome funciona bien.
Cavé un poco y la línea que causa el error está en el módulo angular / común:
function combine(options) {
return (_a = ((Object))).assign.apply(_a, [{}].concat(options));
var _a;
}
El archivo mecanografiado:
@angular/common/src/pipes/intl.ts línea 175
function combine(options: Intl.DateTimeFormatOptions[]): Intl.DateTimeFormatOptions {
return (<any>Object).assign({}, ...options);
}
El código que llama a la función de
combine
es
@angular/common/src/pipes/intl.ts
línea 48:
''yMMMdjms'': datePartGetterFactory(combine([
ACTUALIZAR
Parece que el error real es que el método
.assign
no está implementado en IE11
Angular 4 IE11 corregido por no poder obtener la propiedad ''aplicar''
Paso 1: Abra la aplicación / boot-browser-ts
Paso 2: agrega la siguiente línea
import ''core-js/client/shim'';
Angular depende de core-js . Por lo tanto, puede usar Object.assign polyfills de él:
import "core-js/client/shim"; // or load it before other angular2 & zone.js stuff
import "zone.js";
import "reflect-metadata";
Es realmente molesto que el tutorial de Materiales Angulares no mencione este problema. Cualquiera que use IE11 y siga su tutorial llegará a este problema.
La solución, como han mencionado otros, es simplemente descomentar esas líneas en el archivo
polyfills.ts
su proyecto.
Pero realmente, esto debería haber sido mencionado en su tutorial.
Estoy pasando demasiadas horas buscando en Google para encontrar soluciones a estos problemas angulares ...
Para trabajar en el navegador IE
Paso 1:
Ejecutar:
npm i mdn-polyfills --save
Paso 2:
abre
polyfills.ts
Paso 3: Descomentar las importaciones en el archivo bajo / ** IE9, IE10 e IE11 requiere todos los siguientes polyfills. ** /
Parece que angular-cli (v1.0.0-rc.0) tiene un archivo llamado polyfills.ts en el que debes descomentar todos los polyfills necesarios para los navegadores, funciona bien para mí con cero instalación en IE-11.
Según
MDN
Object.assign()
Compatibilidad del navegador
IE no es compatible.
Puede importar el polyfill
Object.assign
por
MDN
con npm.
(
mdn-polyfills
)
Ejecute:
npm i mdn-polyfills --save
Uso:
import ''mdn-polyfills/Object.assign'';
Si está utilizando
@angular/cli
y tiene la intención de admitir IE9-11, puede editar el archivo
src/polyfills.ts
para habilitar los polyfills apropiados.
Los polyfills requeridos ya están en el archivo, por lo que todo lo que necesita hacer es descomentarlos.
Por defecto, los proyectos
@angular/cli
se dirigen a los navegadores "perennes" fuera de la caja, lo que significa que IE no es compatible de inmediato, pero puede agregar soporte importando polyfills para las características que necesita.
Si está utilizando angular 4.xy encuentra este error, la solución descrita en https://github.com/angular/angular-cli/issues/6036 funcionó para mí.
Parece que hay un error con la versión 0.8.8 de "zone.js". Sin embargo, la degradación a la versión 0.8.4 resolvió el problema. Vea el vínculo para mas detalles.
Stas Berkov tiene razón, y su respuesta me llevó a una solución ligeramente diferente:
En mi encabezado donde cargo todos los scripts angulares incluí shim.js. (Paquete / minificado en la implementación). Nota importante: es fundamental que shim.js se cargue antes que zone.js, de lo contrario, obtendrá un error diferente.
<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>
en su polyfills.ts agregue:
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'';
si alguien recibió este error en una plantilla angular dotnet core 2.0 usando IE, así es como lo resolví.
-
instalar core-js
npm install core-js --save
-
Agregue esta línea en la parte superior de ClientApp / boot.browser.ts
importar ''core-js / client / shim'';