使用不可变数据结构和深层复制解决该问题。
示例代码:
安装不可变数据库Immutable.js
npm install immutable
创建不可变State
import { Map } from 'immutable';
export interface State {
myObject: Map
针对不可变state更新
import { Map } from 'immutable'; import { Action } from '@ngrx/store';
export function reducer(state: Map
return state.set('myObject', myObject);
}
default: {
return state;
}
} }
深层复制
import { Injectable } from '@angular/core';
@Injectable() export class MyService { private originalState = { myObject: { key: 'value' } };
// Get a copy of the original state getInitialState() { return JSON.parse(JSON.stringify(this.originalState)); } }
在这个示例中,我们使用了Immutable.js创建了不可变状态,以及使用了深层复制来避免原始状态被修改。我们建议在编写具有Angular ngrx的应用程序时使用此类技术,以避免对象的值丢失。