Angular 2 - 合并(扩展)对象
Angular 2 - 合并(扩展)对象
如何在Angular 2中合并两个对象?\n在AngularJS 1中,我们有\"merge\"和\"extend\"函数:\nhttps://docs.angularjs.org/api/ng/function/angular.merge\nhttps://docs.angularjs.org/api/ng/function/angular.extend\n但在Angular 2中似乎没有类似的功能!\n你有什么想法吗?\n谢谢!
在Angular 2中,当我们需要合并(扩展)多个对象时,可能会遇到问题。解决这个问题的方法是使用underscore/lodash库。
首先,我们需要在Angular 2/4堆栈中导入underscore/lodash库。可以通过以下方式导入:
1. 下载underscore/lodash库。可以从官方网站https://lodash.com/docs#merge下载。
2. 在Angular 2/4项目中引入underscore/lodash库。可以在项目中的package.json文件中添加以下依赖项:
"dependencies": {
"lodash": "^4.17.20"
}
3. 运行npm install命令以安装库:
npm install
4. 在需要使用underscore/lodash库的文件中导入它:
import * as _ from 'lodash';
现在,我们可以使用underscore/lodash库来合并(扩展)对象。以下是一个示例代码:
const obj1 = {a: 1, b: 2}; const obj2 = {c: 3, d: 4}; const mergedObj = _.merge(obj1, obj2); console.log(mergedObj);
以上代码将输出合并后的对象:
{a: 1, b: 2, c: 3, d: 4}
通过使用underscore/lodash库,我们可以轻松地合并(扩展)多个对象,以满足我们的需求。这是解决Angular 2中合并(扩展)对象问题的一种方法。
在Angular中,使用javascript的Object Spread语法或Object.assign()来合并(扩展)对象:
const obj = {...object1, ...object2}; // 或者 const obj = Object.assign({}, object1, object2);
上述选项在IE浏览器中不受原生支持。
1. Angular CLI
版本8及更高版本:
在Angular CLI的版本8及更高版本中,您不需要采取任何额外的操作。应用程序使用差异加载进行构建,这基本上意味着Angular将为旧版浏览器加载不同的javascript捆绑包,其中包含所有必要的polyfill。了解更多有关浏览器支持的信息。
较旧版本:
如果您正在使用Angular CLI的较旧版本,并且使用的Typescript版本小于2.1(相当旧),那么打开/src/polyfills.ts并取消注释以下行:
// import 'core-js/es6/object';
这将启用提供跨浏览器支持Object.assign()的对象polyfill。
2. Typescript
如果您没有使用Angular CLI,但使用的是Typescript 2.1或更高版本,则不需要采取任何其他操作。否则...
3. 纯Javascript
如果您不使用Angular CLI或Typescript,则可以将一个polyfill导入到您的项目中。这里有很多选择,以下是其中几个:
- Babel是一个不错的选择。您可以使用Object.assign()和Object Spread polyfill插件之一。
- 另一个选择是Angular CLI使用的core-js npm包。
- 一个来自Typescript转换为javascript的简单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。在构建时实现对象扩展应该是确切的解决方案,因为大多数使用Angular 2+的用户都是使用Typescript构建应用程序。