Как мы должны обновить список внутри другой переменной списка без эффекта родительского списка в angular - PullRequest
1 голос
/ 25 апреля 2020

У меня есть следующий список данных.

subscriberDataList
        -> wipEligibilityList
        -> dependentList

dependentList
        -> wipEligibilityList
        -> eligibilityList

wipEligibilityList[0]
        -> status
        -> amountPending

eligibilityList[0]
        -> status
        -> amountPending

Вопрос Как мне обновить dependentList.wipEligibilityList.status с зависимого списка.eligibilityList.status? Но не обновление для subscriberDataList.wipEligibilityList.status and amountPending. Если я делаю, как показано ниже, на него также повлияли subscriberDataList.wipEligibilityList.status и subscriberDataList.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;
                }
            }
        });
    });
});

1 Ответ

2 голосов
/ 25 апреля 2020

В этом случае проблема заключается в том, как вы изначально строите зависимый список. Если это те же данные, вы должны создать их таким образом, чтобы они не совпадали со ссылкой (вплоть до уровня объектов в списке):

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

После этого вы можете следовать своей логике c и это будут независимые данные. JSON.parse(JSON.stringify(...)) создаст глубокую копию вашего списка, и это позволит избежать любых изменений, внесенных в объекты одного списка, для отражения в другом списке.

Если зависимый список является отфильтрованной копией исходного, вы можете перестроить его перед итерацией по объектам:

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

Вы также можете использовать библиотеку, например fast-copy , для эффективного создания глубокого клона ваших исходных данных:

import copy from 'fast-copy';

...

subscriberDataList.dependentList = copy(subscriberDataList.dependentList);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...