Angular中如何基于Partial<T>简洁更新对象指定属性,不重置其他值?
简洁更新Angular组件中的必填状态对象
你可以通过以下两种简洁方式更新pagesToComplete对象,既保留原有属性值,又仅更新传入的Partial对象中的对应属性:
方法1:对象展开运算符(推荐,类型安全且直观)
利用ES6对象展开语法,先复制原对象的所有属性,再用Partial更新对象的属性覆盖对应字段:
// 假设从Service订阅中拿到partialUpdate: Partial<IncompletPages> this.pagesToComplete = { ...this.pagesToComplete, ...partialUpdate };
这种方式会创建新对象,原对象未被更新的属性全部保留,TypeScript会自动校验partialUpdate的属性属于IncompletPages,不会引入非法字段。
方法2:Object.assign(直接修改原对象)
如果不需要创建新对象、希望直接修改原pagesToComplete的引用,可使用Object.assign:
Object.assign(this.pagesToComplete, partialUpdate);
该方法会把partialUpdate中的属性直接合并到原对象上,仅更新存在的属性,其他属性保持不变,同样符合类型要求。
补充说明
两种方法都适配你的场景:Service传递的是Partial<IncompletPages>类型对象,只会包含接口定义的字段,不会出现意外覆盖或新增属性的问题,比逐个用空值合并赋值简洁得多。
内容的提问来源于stack exchange,提问作者PaulBunion
相关产品推荐
相关产品推荐

