Как добавить дочернюю строку в таблицу данных, которая является дочерним компонентом из angular - PullRequest
0 голосов
/ 05 марта 2020

У меня есть таблица данных, которая заполняется из json с использованием директивы * ngFor в angular,

[
    {
        "vmName": "sd-f43c-aafb",
        "appid": "161787",
        "appshortName": "AV for NAS",
        "description": "sample - testing ..",
        "env": "DEV",
        "orderID": "NO00009",
        "orderDate": "22/2/2020",
        "status":"success",
        "processors":"2",
        "memory":"16 GB",
        "harddisk":"50 GB",
        "RequestorSOEID": "BS26107",
        "operationalfarmName": "VRA Test Farm",
        "childData":[
            {
                "vmName": "sd-f43c-aafb",
                "orderDate": "22/2/2020",
                "status":"success"
            },
            {
                "vmName": "sd-f43c-aaxyz",
                "orderDate": "22/2/2020",
                "status":"failed"
            }
        ]
    }]

, которая выглядит следующим образом enter image description here

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

enter image description here

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

это то, как я добавляю его, используя javascript в angular ngAfterViewInit () {

//to do  adding a check box 



    $('#jithesh').on('contextmenu', function (e) {
      var top = e.pageY - 10;
      var left = e.pageX - 90;
      $("#context-menu").css({
        display: "block",
        top: top,
        left: left
      }).addClass("show");
      return false; //blocks default Webbrowser right click menu
    }).on("click", function () {
      $("#context-menu").removeClass("show").hide();
    });

    $("#context-menu a").on("click", function () {
      $(this).parent().removeClass("show").hide();
    });


    $('#jithesh tbody').on('click', 'td.details-control', function () {
      var tr = $(this).closest('tr');
      var row = $("#jithesh").DataTable().row(tr);

      if (row.child.isShown()) {
        // This row is already open - close it
        row.child.hide();
        tr.removeClass('shown');
      }
      else {
        // Open this row
        row.child(format(the json value here )).show();
        tr.addClass('shown');
      }
   });

    function format(children) {
       return '<table id="childdata" datatable class="row-border hover"  cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">' +
        '<tr>' +
          '<th></th>'+
          '<th>Vm Name</th>' +
          '<th>Status</th>' +
          '<th>Expiry Date</th>' +
        '</tr>' +
        '<tr *ngFor= "let d of children" > '+
          '<td> <input type="checkbox" /></td>'+
          '<td>{{d.vmName}}</td>' +
          '<td><img src="../assets/images/Start-icon.png" alt="Server Started" width="20" height="20"></td>' +
          '<td>d.orderDate</td>' +
        '</tr>' +

        '</table>';
    }

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