2016-04-03 73 views

回答

24

Angular2不提供這樣的東西。

可以使用例如Object.assign()

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

請注意IE瀏覽器。根據MDN,它不被支持。 – lukeatdesignworks

+1

Android瀏覽器不支持這一點:http://kangax.github.io/compat-table/es6/#test-Object_static_methods_Object.assign – Chris

+4

如果您使用的是Angular-CLI,請查找「poyfills.ts'和取消註釋支持IE9-11的代碼。 – shammelburg

13

根據MDN, Object.assign()通過IE瀏覽器和Android不支持呢。如果你安裝的2.1或更高的打字稿版本雖然,你可以使用Object Spread代替:

let obj = { x: 1, y: "string" }; 
var newObj = {...obj, z: 3, y: 4}; // { x: number, y: number, z: number } 

如果你不想使用打字稿,那麼這裏從打字稿的轉換到上述的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; 
}; 

var obj = { x: 1, y: "string" }; 
var newObj = Object.assign({}, obj, { z: 3, y: 4 }); 

View on Typescript Playground