1

我正在使用 ngrx/store 来跟踪一组活动层(要显示在地图上)。

{
  layers: ['layer_1', 'layer_2']
}

在我的组件中,我订阅了这个变量:

 this.mapState$
    .map(mapState => mapState.layers)
    .subscribe(layers=> console.log(layers));

现在的情况

  • 添加layer_3时得到['layer_1', 'layer_2', 'layer_3']

  • 删除 layer_2 时,我得到['layer_1', 'layer_3']

我试图实现的目标而不是当前情况下的一个数组。我想要两个数组。一个包含所有添加,一个包含所有删除。

欢迎不同的方法。关键是我想把它存储在ngrx/store中。

这些只是我的第一步。在我的最终应用程序中,我想支持可以添加、删除但也可以移动的航路点。当移动一个航点时,我需要在数组中读取它之前和之后的航点以操纵(计算和重绘)路线。

更新:显然 RxJS 有一个 Observable.ofArrayChanges 但在 RxJS 5 中已被弃用。

4

1 回答 1

0

你可以用这种方式接近:

减速器:

{
  layers: ['layer_1', 'layer_2'],
  changesInLayer: { type: 'ADD', layers: ['layer_1', 'layer_2']}
}

行动:

添加层:

{
   layers: [...this.state.layers, action.payload],
   changesInLayer: { type: 'ADD', layers: [action.payload]}
}

移除层:

{
   layers: this.state.layers.filter(item => {
       return item !== action.payload
   }),
   changesInLayer: { type: 'REMOVE', layers: [action.payload]}
}

零件:

this.mapState$
    .subscribe(state => console.log(state.layers, state.changesInLayer));
于 2017-06-17T17:19:27.970 回答