Angular 2 - 合并(扩展)对象

12 浏览
0 Comments

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谢谢!

0
0 Comments

在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中合并(扩展)对象问题的一种方法。

0
0 Comments

在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构建应用程序。

0
0 Comments

在Angular2中,没有提供类似的功能。但是可以使用Object.assign()来实现对象的合并。Object.assign()方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。需要注意的是,该方法在IE浏览器中不受支持,而Android浏览器也不支持该方法。

解决方法是,如果你正在使用Angular-CLI,可以找到polyfills.ts文件,并取消注释支持IE9-11的代码。这样就可以在IE浏览器中使用Object.assign()方法了。

0