将本地存储中的嵌套矩阵另存为json并从中进行重构

时间:2018-08-31 16:04:27

标签: angular multidimensional-array nested

我有一个矩阵,单元格将简单元素或复合元素包含在其他元素内

enter image description here

这是过时的容器:

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

[[[[],[]],[[],[]]]用于2 * 2矩阵

这是递归容器(murat):

<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 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与父对象一起传递,但是由于这是一个矩阵而不是树,所以它是矩阵。

如何为嵌套矩阵单元获取相关的json?

注意:我希望图像能显示并描述情况。由于限制,我无法显示我所在区域的图像。

0 个答案:

没有答案