web-dev-qa-db-ja.com

Angular 2-オブジェクトのマージ(拡張)

Angular 2?

AngularJS 1には、「マージ」および「拡張」機能があります。 https://docs.angularjs.org/api/ng/function/angular.mergehttps:// docs .angularjs.org/api/ng/function/angular.extend

ただし、Angular 2!

アイデアはありますか?

ありがとう!

31
tadaa9

Angular2はこのようなものを提供しません。

たとえば、 Object.assign() を使用できます

Object.assign(target, source_1, ..., source_n)
30

Angularで行う方法は、javascriptの Object.assign() を使用することです。

_const obj = Object.assign({}, object1, object2);
_

ただし、IEおよびAndroidではまだサポートされていないことに注意してください。
クロスブラウザサポートには3つのオプションがあります。

1。 Angular CLI

Angular CLIで最新のAngularバージョンを使用している場合は、_/src/polyfills.ts_を開き、次の行のコメントを解除します。

_// import 'core-js/es6/object';
_

これにより、Object.assign()のクロスブラウザーサポートを提供するオブジェクトポリフィルが有効になります。

2。 TypeScript

TypeScriptバージョン2.1以降がインストールされている場合は、 Object Spread を使用できます。

_const obj = {...object1, ...object2};
_

3。 Javascript

Angular CLIを使用せずにObject.assign()を使用したい場合は、ポリフィルをプロジェクトにインポートできます。たくさんありますが、ここにいくつかあります:


core-js npm package Angular CLIがポリフィルに使用する:

_npm install core-js --save
_

単純なポリフィル TypeScriptのjavascriptへの変換から:

_Object.assign = Object.assign || function(t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
    }
    return t;
};
_

そして最後に、 MDN polyfill

26
m.spyratos

アンダースコア/ lodashライブラリを使用できます。 https://lodash.com/docs#merge

Angle2/4スタックに含めるだけです。
この質問では、次の方法について説明します。 lodashをangle2 + TypeScriptアプリケーションにインポートする

0
James Earlywine