Рекурсивный вызов функции в angular 6 вызвал превышение максимального размера стека вызовов - PullRequest
0 голосов
/ 07 июля 2019

Я использую угловую библиотеку treeNode с 6 простыми номерами. Я хотел создать копию на узле, который имеет более 1000 дочерних элементов.

Но когда я пытаюсь добиться того же с помощью рекурсивного вызова, это приводит к увеличению максимального размера стека вызовов.

Может кто-нибудь помочь мне решить эту проблему.

createCopyOfTreeNode(originalTreeNode, parentTreeNode?) {
    const duplicateTreeNodeData = $.extend(true, {}, originalTreeNode.data);
    const duplicateTreeNode = new TreeNode();

    duplicateTreeNode.label = originalTreeNode.label;
    duplicateTreeNode.icon = originalTreeNode.icon;
    duplicateTreeNode.assetType = originalTreeNode.assetType;

    duplicateTreeNode.expandedIcon = originalTreeNode.expandedIcon;
    duplicateTreeNode.collapsedIcon = originalTreeNode.collapsedIcon;
    duplicateTreeNode.leaf = originalTreeNode.leaf;
    duplicateTreeNode.selectable = originalTreeNode.selectable;
    duplicateTreeNode.data = duplicateTreeNodeData;
    if (parentTreeNode) {
        if (!parentTreeNode.children) {
            parentTreeNode.children = [];
        }
        parentTreeNode.children.push(duplicateTreeNode);
    }
    if (originalTreeNode.children && originalTreeNode.children.length > 0) {
        setTimeout(() => {
            originalTreeNode.children.forEach(originalTreeNodeChild => {
                this.createCopyOfTreeNode(originalTreeNodeChild, duplicateTreeNode);
            });
        }, 0);
    }
    return duplicateTreeNode;


    }

1 Ответ

0 голосов
/ 07 июля 2019

Вы можете использовать JSON.parse и JSON.stringify методы для создания копии объекта.

Например:

const duplicateNode = JSON.parse(JSON.stringify(originalNode));
...