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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可观察值是另一个可观察值的一部分相关的知识,希望对你有一定的参考价值。

indexDataindexEditData是我在应用程序中使用的可观察对象。 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();
答案

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

我建议您应该:

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

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

以上是关于可观察值是另一个可观察值的一部分的主要内容,如果未能解决你的问题,请参考以下文章

KnockoutJS调用可观察的属性

Knockout保护可观察

淘汰赛可观察格式

实验三

更新可观察打字稿中的数组值

将可观察对象的一部分作为角度分量的输入时出错?