来自1个订阅的2个数据集使1个集只读或将更改应用于1个集(Angular)

时间:2017-05-17 00:24:45

标签: angular observable http-get subscription

早上好。

我有一个服务,需要花时间来返回结果。最糟糕的是 - 我必须打两次电话。

返回的数据形成2个网格(一个可编辑),在进行更改时会触发其他事件。

如果我将订阅分开,则对第二个数组所做的更改将包含在此数据集

如果我订阅该服务一次并创建2个数据集,则对阵列所做的任何更改都将流向两个集合。

我怀疑问题与我订阅服务的方式有关

this._CashService.getCash()
  .subscribe((data: any[]) => {
    this.cash = data;
    this.cash2 = data;
});

这是一个显示我的问题的傻瓜

https://plnkr.co/GwgBD1Mp8XF5oLZoYt4k?p

我不会改变顶部网格

1 个答案:

答案 0 :(得分:0)

当我将第一个网格绑定到“cash”变量并将第二个网格绑定到“cash2”时,这些变量引用了相同的数组(来自我的服务的“数据”)。因此,当我修改“cash2”数组的项目时,“cash”数组也被修改。

要单独编辑数组,我需要复制原始数组。要为此示例执行此操作,需要

this.cash2 = JSON.parse(JSON.stringify(data));