可观察值是另一个可观察值的一部分

时间:2019-12-13 07:14:55

标签: angular typescript

indexData indexEditData 是我在应用程序中使用的可观察对象。 indexData 保存一个json对象。我用这个json值建立了一个表。我通过选择行来完成对该表行的编辑。选择时,要编辑的所选行的json将放置在indexEditData中。在这个变量中,我必须更改值。当我更改值时,它也反映在indexData中。

如何限制更改?当我在indexEditData中编辑时,我不想更改indexData中的值。

private INDEX_DATA: any[] = [];
private indexDataSource = new BehaviorSubject(this.INDEX_DATA);
indexData = this.indexDataSource.asObservable();

private INDEX_EDIT_DATA: any[] = []; // For Grid in edit view 
private indexDataEditSource = new BehaviorSubject(this.INDEX_EDIT_DATA);
indexEditData = this.indexDataEditSource.asObservable();

1 个答案:

答案 0 :(得分:0)

indexData是可观察的,但是您不需要indexEditData是可观察的,因为它只是本地组件的状态。

我建议您应该

  • indexData声明为observable (ReplaySubject)indexEditData只是普通的对象数组
  • 从您的源获取数据并将其存储在indexData中。订阅它并将值存储在indexEditData
  • 使用indexEditData进行更新/编辑等
  • 完成编辑后,使用indexData替换indexData.next(indexEditData)

希望这可以解决您的问题。