如何将两个对象与Angular 2合并?
在AngularJS 1中,我们有"合并"并且"延伸"功能: https://docs.angularjs.org/api/ng/function/angular.merge https://docs.angularjs.org/api/ng/function/angular.extend
但在Angular 2中显然没什么!
你有什么想法吗?
谢谢!
答案 0 :(得分:28)
答案 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