Angular 2 - 合并(扩展)对象

时间:2016-04-03 10:33:01

标签: javascript angularjs angular

如何将两个对象与Angular 2合并?

在AngularJS 1中,我们有"合并"并且"延伸"功能: https://docs.angularjs.org/api/ng/function/angular.merge https://docs.angularjs.org/api/ng/function/angular.extend

但在Angular 2中显然没什么!

你有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:28)

Angular2不提供这样的内容。

您可以使用例如Object.assign()

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

答案 1 :(得分:26)

在Angular中使用javascript Object.assign()

的方法
const obj = Object.assign({}, object1, object2);

请注意,IE和Android尚未支持它 您有三种跨浏览器支持选项:

<强> 1。 Angular CLI

如果您使用Angular CLI的最新Angular版本,请打开/src/polyfills.ts并取消注释以下行:

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

这将启用Object polyfill,它为Object.assign()提供跨浏览器支持。

<强> 2。打字稿

如果您安装了Typecript版本2.1或更高版本,则可以使用Object Spread

const obj = {...object1, ...object2};

第3。的Javascript

如果您不使用Angular CLI并且仍想使用Object.assign(),则可以将polyfill导入项目中。那里有很多,这里有几个:

Angular CLI用于其polyfill的core-js npm package

npm install core-js --save

从Typescript转换为javascript中的simple polyfill

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

答案 2 :(得分:0)

您可以使用下划线/ lodash库。 https://lodash.com/docs#merge

只需将它包含在angular2 / 4堆栈中即可 这个问题解释了如何:Importing lodash into angular2 + typescript application