Angular2パッケージを次のバージョンにアップグレードすると、次のエラーが発生します。
エラー: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;
}
TypeScriptファイル:
@ angular/common/src/pipes/intl.ts 175行目
function combine(options: Intl.DateTimeFormatOptions[]): Intl.DateTimeFormatOptions {
return (<any>Object).assign({}, ...options);
}
combine
関数を呼び出すコードは @ angular/common/src/pipes/intl.ts 48行目です。
'yMMMdjms': datePartGetterFactory(combine([
UPDATE
実際のエラーは、.assign
メソッドがIE11に実装されていないことです
@angular/cli
を使用しており、IE9-11をサポートする場合は、src/polyfills.ts
ファイルを編集して適切なポリフィルを有効にできます。必要なポリフィルはすでにファイルにあるため、必要なのはコメントを外すことだけです。
デフォルトでは、@angular/cli
プロジェクトはすぐに使用できる「常緑」ブラウザをターゲットにします。つまり、IEはすぐにはサポートされませんが、必要な機能のポリフィルをインポートしてサポートを追加できます。
Angularはcore-jsに依存しています。これにより、Object.assignからのポリフィルを使用できます:
import "core-js/client/shim"; // or load it before other angular2 & zone.js stuff
import "zone.js";
import "reflect-metadata";
Angular Materials tutorial がこの問題に言及していないのは本当に迷惑です。 IE11を使用し、チュートリアルに従う人は誰でもこの問題に直面するでしょう。
解決策は、他の人が言及したように、プロジェクトのpolyfills.ts
ファイルのこれらの行のコメントを外すことです。
しかし、実際には、これは彼らのチュートリアルで言及されるべきでした。
これらのAngular問題の解決策を見つけるためにグーグルで過ごす時間が長すぎます...
MDN Object.assign()
ブラウザの互換性 IEによると、サポートされていません。
MDN npmでObject.assign
ポリフィルをインポートできます。 ( mdn-polyfills )
実行:npm i mdn-polyfills --save
使用:import 'mdn-polyfills/Object.assign';
IEブラウザで作業するには
ステップ1:実行:npm i mdn-polyfills --save
ステップ2:開くpolyfills.ts
ステップ3:nComment/** IE9、IE10、およびIE11の下のファイルのインポートには、以下のすべてのポリフィルが必要です。 ** /
polyfills.tsで以下を追加します。
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';
iEを使用してdotnet core 2.0 Angularテンプレートでこのエラーが発生した場合、これが解決方法です。
core-jsをインストールする
npm install core-js --save
ClientApp/boot.browser.tsの上部にこの行を追加します
import 'core-js/client/shim';
angular 4.xを使用していて、このエラーに遭遇した場合、 https://github.com/angular/angular-cli/issues/6036 で説明されている解決策は私。
「zone.js」のバージョン0.8.8にバグがあるようです。ただし、バージョン0.8.4にダウングレードすると、問題は解決しました。詳細については、リンクを参照してください。
プロパティ「適用」を取得できないためのAngular 4 IE11の修正
ステップ1:app/boot-browser-tsを開く
ステップ2:以下の行を追加します
import 'core-js/client/shim';
Angular-cli(v1.0.0-rc.0)には、ブラウザーに必要なすべてのポリフィルのコメントを解除する必要があるpolyfills.tsというファイルがあります。IE-11でゼロインストールを行うと、うまく機能します。
Stas Berkovは正しいです、そして彼の答えは私にわずかに異なる解決策を導きました:
すべてのAngularスクリプトを読み込むヘッダーに、shim.jsを含めました。 (デプロイ時にバンドル/縮小しました)。大きな注意:shim.jsをzone.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>