秋田为我们提供了两种类型的商店:
可以保存任何形状数据的基本存储
表示实体的平面集合的实体存储。
实体店
您选择了第二个选项(这是您的地理收藏的正确选择)并创建了基于实体的商店。现在您需要向秋田商店提供一个集合,但您提供的是整个 json 对象。秋田尝试将此对象转换为实体数组,但创建了错误的数组。
放()
用提供的集合替换当前集合,并重置活动实体
取自秋田文档
你应该做的是将一个数组传递给EntityStore.set
方法
this.serv.SetState(data['data'].geography.data)
然后简单地调用 EntityStore.add 方法以向您的集合中再添加一项:
this.gStore.add(data);
Forked Stackblitz Akita 实体店
基本商店
如果您不想使用方便的 EntityStore,那么您可以实现基本存储:
import { Store, StoreConfig } from '@datorama/akita';
export class GeoStore extends Store<IGeoState> {
...
只有这样,您才能像使用Store.update
方法描述的那样更新商店
var _res = _.cloneDeep(this.GetState());
_res.data.geography.data.push(data);
this.gStore.update(_res);
Forked Stackblitz Akita 基本款