Сохраните вложенную матрицу в localalstorage как json и восстановите ее - PullRequest
0 голосов
/ 31 августа 2018

У меня есть матрица, в которой ячейки содержат простые элементы или составные элементы внутри других

enter image description here

это внешний контейнер:

<div>
    <murat [droppedItems]=" [[[],[]],[[],[]]]" [parent]='' > 
    </murat>
</div>

[[[], []], [[], []]] для матрицы 2 * 2

это рекурсивный контейнер (мурат):

<ng-template #layoutTemplate let-pDroppedItems="droppedItems">
    <muratinner [(droppedItems)]="droppedItems" [parent] ="parent"></muratinner>
</ng-template>
<ng-container *ngTemplateOutlet="layoutTemplate; context: {pDroppedItems: droppedItems, parent:parent}"></ng-container>

наконец, это самая внутренняя часть рекурсии (muratinner):

<li *ngFor="let item of getDroppedItemsNode(j,i)">
    <murat [parent]="droppedItems"></murat>
</li>

getDroppedItemsNode выглядит так:

getDroppedItemsNode(j: number, i: number) {
    var elems = this.droppedItems[j][i];
    return elems.filter((x) => x.BizType == BizType.Container)
}

BizType enum:

enum BizType {
    Container,
    Label,
    Textbox,
    Checkbox,
    Dropdown
}

Вот что происходит, когда я добавляю компонент в muratinner

onAnyDrop(e: DropEvent, j: number, i: number) {
    this.droppedItems[j][i].push(e.dragData); 
    this.sharedService.elementActionOnDroppedItems.emit({
        pDroppedItems: this.droppedItems,
        result: this.result
    })
} 

Это событие, полученное от:

this.sharedService.elementActionOnDroppedItems.subscribe(($event: any) => {
    localStorage.setItem("droppedItems", JSON.stringify($event.droppedItems))
});

Вот часть вопроса:

droppedItems: [[[{"Name":"Label","BizType":1}],[{"Name":"Textbox","BizType":2}]],[[{"Name":"Checkbox","BizType":3}],[{"Name":"Container","BizType":0}]]]

для enter image description here

Однако у меня есть:

[[[{"Name":"Label","BizType":1}],[]],[[],[]]]

для enter image description here

У меня есть попытки передать dropItems с parent, но поскольку это матрица, а не дерево, то это матрица.

Как мне получить соответствующий json для ячеек вложенной матрицы?

Примечание. Надеюсь, что изображения отображаются и отображают ситуацию. Я не могу отображать изображения из своего региона из-за ограничений.

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