отключить элемент в компоненте дерева - PullRequest
0 голосов
/ 07 мая 2019

Я использовал угловые 7 и ngx-treeview. Я хочу отключить элемент в компоненте дерева, если какое-либо условие проверено.

У меня проблема с чтением данных json с родительского узла на дочерний узел

У меня есть данные JSON с этим форматом.

[
    {
        "text": "test 1",
        "value": "1",
        "nbr": "1",
        "children": [
            {
                "text": "test 1_1",
                "value": "1_1",
                "nbr": "2",
                "children": [
                    {
                        "text": "test 1_1_1",
                        "value": "1_1_1",
                        "nbr": "1",
                        "children": []
                    },
                    {
                        "text": "test 1_1_2"",
                        "value": "1_1_2",
                        "nbr": "0",
                        "children": []
                    },
                    {
                        "text": "test 1_1_3"",
                        "value": "1_1_3",
                        "nbr": "0",
                        "children": []
                    },
                    {
                        "text": "test 1_1_4"",
                        "value": "1_1_4",
                        "nbr": "0",
                        "children": []
                    }
                ]
            },
            {
                "text": "test 1_2",
                "value": "1_2",
                "nbr": "0",
                "children": []
            }
        ]
    },
    {
        "text": "test 2",
        "value": "2",
        "nbr": "0",
        "children": []
    }
]

Я хочу зациклить данные json и отключить элемент, если условие проверено.

Моя проблема в том, как зациклить данные JSON.

Я пытаюсь с этим кодом:

 let bookObjects = new Array();
        this.testService.query({

      }).subscribe((res: HttpResponse<TestEntity[]>) => {
        this.temp= res.body;

        this.temp.forEach((x) => {


          if(x.nbr=='0')
            {
                x.disabled = true;
            }

            x["children"].forEach(x => {
                if(x.nbr=='0')
                {
                    x.disabled = true;
                }
                x["children"].forEach(x => {
                    if(x.nbr=='0')
                    {
                        x.disabled = true;
                    }

                    })
                })


            bookObjects.push(new TreeviewItem(x));
            });


      });

это мой HTML-файл:

<ng-template #itemTemplate let-item="item" let-onCollapseExpand="onCollapseExpand" let-onCheckedChange="onCheckedChange">
      <div class="form-inline row-item">

        <i *ngIf="item.children" (click)="onCollapseExpand()" aria-hidden="true" class="fa" [class.fa-caret-right]="item.collapsed"
          [class.fa-caret-down]="!item.collapsed"></i>
        <div class="form-check">
          <input type="checkbox" class="form-check-input" [(ngModel)]="item.checked" (ngModelChange)="onCheckedChange()" [disabled]="item.disabled"
            [indeterminate]="item.indeterminate" />
          <label class="form-check-label" (click)="item.checked = !item.checked; onCheckedChange()">
            {{item.text}}
          </label>

        </div>
      </div>
    </ng-template>

    <div class="row">
      <div class="col-6">
        <div class="form-group">
          <div class="d-inline-block">
            <ngx-treeview [items]="items" [itemTemplate]="itemTemplate" (selectedChange)="onSelectedChange($event)">
            </ngx-treeview>
          </div>
        </div>
      </div>

    </div>
...