我们应该如何更新另一个列表变量中的列表而不影响 angular 中的父列表

How should we update list inside another list variable without effect parent list in angular

我有以下数据列表。

subscriberDataList
        -> wipEligibilityList
        -> dependentList

dependentList
        -> wipEligibilityList
        -> eligibilityList

wipEligibilityList[0]
        -> status
        -> amountPending

eligibilityList[0]
        -> status
        -> amountPending

问题是 我应该如何从 dependentList.eligibilityList.status 更新 dependentList.wipEligibilityList.status ?但不更新 subscriberDataList.wipEligibilityList.status and amountPending. 如果我像下面那样做,它也会影响 subscriberDataList.wipEligibilityList.statussubscriberDataList.wipEligibilityList.amountPending

this.subscriberDataList.dependentList.forEach(dependent => {
    dependent.wipEligibilityList.forEach(wipEiligible => {
        dependent.eligibilityList.forEach(eligibile => {
            if(wipEiligible.status) {
                if(eligibile.status && eligibile.status === 'ACTIVE' && eligibile.amountPending === 'NO' ) {
                    wipEiligible.status = eligibile.status;
                    wipEiligible.amountPending = eligibile.amountPending;
                }
            }
        });
    });
});

在那种情况下,问题似乎出在您最初构建依赖列表的方式上。如果它是相同的数据,您应该以不同于相同引用的方式创建它(向下到列表中对象的级别):

subscriberDataList.dependentList = 
  JSON.parse(JSON.stringify(subscriberDataList.wipEligibilityList));

之后按照你的逻辑,就是独立的数据了。 JSON.parse(JSON.stringify(...)) 将创建列表的深层副本,这可以避免对一个列表的对象所做的任何更改反映在另一个列表中。

如果依赖列表是原始列表的过滤副本,您可以在遍历对象之前重建它:

subscriberDataList.dependentList = 
  JSON.parse(JSON.stringify(subscriberDataList.dependentList));

您还可以使用库,例如​​ fast-copy 以高效的方式构建原始数据的深度克隆:

import copy from 'fast-copy';

...

subscriberDataList.dependentList = copy(subscriberDataList.dependentList);