I have this JSON
 "allSMSData": [
    [
      {
        "key": "SMS Date",
        "value": "17-08-2016 10:19"
      },
      {
        "key": "Sender Name"
      },
      "Sushmitha",
      {
        "key": "Original Message",
        "value": "Dear Customer, below mentioned updation has been done for Airtel Mobile 8861680006.\n\nService Activated:\na. Child Connection Data Usage Limit_2 GB_FP\n\nService Deactivated:\na. Child Connection Data Usage Limit_0.5 GB_FP salary has credited"
      }
    ],
    [
      {
        "key": "SMS Date",
        "value": "21-08-2016 10:19"
      },
      {
        "key": "Sender Name",
        "value": "Sushmitha"
      },
      {
        "key": "Original Message",
        "value": "Dear Customer, below mentioned updation has been done for Airtel Mobile 8861680006.\n\nService Activated:\na. Child Connection Data Usage Limit_2 GB_FP\n\nService Deactivated:\na. Child Connection Data Usage Limit_0.5 GB_FP salary has credited"
      }
    ],
    [
      {
        "key": "SMS Date",
        "value": "21-08-2017 10:19"
      },
      {
        "key": "Sender Name",
        "value": "AZ-AIRCCM"
      },
      {
        "key": "Original Message",
        "value": "Dear Customer, below mentioned updation has been done for Airtel Mobile 8861680006.\n\nService Activated:\na. Child Connection Data Usage Limit_2 GB_FP\n\nService Deactivated:\na. Child Connection Data Usage Limit_0.5 GB_FP. nach has done"
      }
    ],
    [
      {
        "key": "SMS Date",
        "value": "22-08-2017 07:21"
      },
      {
        "key": "Sender Name",
        "value": "AZ-AIRCCM"
      },
      {
        "key": "Original Message",
        "value": "Account Details: Bill Cycle: 20th to 19th, Bill Date: 21st of every month, Bill Due Date: Bill Date + 18 days. For Plan Tariff, ISD and roaming tariff details, click www.airtel.in, Nach"
      }
    ],
    [
      {
        "key": "SMS Date",
        "value": "22-08-2017 10:19"
      },
      {
        "key": "Sender Name",
        "value": "AZ-AIRCCM"
      },
      {
        "key": "Original Message",
        "value": "Dear Customer, below mentioned updation has been done for Airtel Mobile 8861680006.\n\nService Activated:\na. Child Connection Data Usage Limit_2 GB_FP\n\nService Deactivated:\na. Child Connection Data Usage Limit_0.5 GB_FP"
      }
    ],
    [
      {
        "key": "SMS Date",
        "value": "21-09-2017 10:19"
      },
      {
        "key": "Sender Name",
        "value": "AZ-AIRCCM"
      },
      {
        "key": "Original Message",
        "value": "Dear Customer, below mentioned updation has been done for Airtel Mobile 8861680006.\n\nService Activated:\na. Child Connection Data Usage Limit_2 GB_FP\n\nService Deactivated:\na. Child Connection Data Usage Limit_0.5 GB_FP. nach has done. Bureau sent. Loan Credited.EMi qwr f ff. bounce."
      }
    ],
    [
      {
        "key": "SMS Date",
        "value": "22-09-2017 07:21"
      },
      {
        "key": "Sender Name",
        "value": "AZ-AIRCCM"
      },
      {
        "key": "Original Message",
        "value": "Account Details: Bill Cycle: 20th to 19th, Bill Date: 21st of every month, Bill Due Date: Bill Date + 18 days. For Plan Tariff, ISD and roaming tariff details, click www.airtel.in, Nach, Score done 0 loan"
      }
    ],
    [
      {
        "key": "SMS Date",
        "value": "01-12-2017 11:42"
      },
      {
        "key": "Sender Name",
        "value": "AM-MUBBLE"
      },
      {
        "key": "Original Message",
        "value": "Thank you for choosing Mubble https://x38uh.app.goo.gl/zgxL For your transaction UQ0SCZQ8, OTP is 459734.. Pls do not share with anyone"
      }
    ],
    [
      {
        "key": "SMS Date",
        "value": "11-12-2017 11:42"
      },
      {
        "key": "Sender Name",
        "value": "AM-MUBBLE"
      },
      {
        "key": "Original Message",
        "value": "Rs. 00000 Deposited to your A/c *********000285 Details: NEFT-HUMMINGWAVE.Tot Bal:35201.57CR Avl Amt:- 35201.57(04-09-2017 13:08:20)"
      }
    ],
    [
      {
        "key": "SMS Date",
        "value": "21-01-2018 10:19"
      },
      {
        "key": "Sender Name",
        "value": "Sushmitha"
      },
      {
        "key": "Original Message",
        "value": "Dear Customer, below mentioned updation has been done for Airtel Mobile 8861680006.\n\nService Activated:\na. Child Connection Data Usage Limit_2 GB_FP\n\nService Deactivated:\na. Child Connection Data Usage Limit_0.5 GB_FP salary has credited"
      }
    ]
  ]
In my template, I am running two nested for loop
<table id="customers" *ngIf="allSMSData">
<caption *ngIf="allSMSData">
<h4> SMS Insights</h4>
  </caption>
<div *ngFor="let item of allSMSData">
<tr *ngFor="let i of item">
  <td class="key" width="50%">
    {{i.key}}
  </td>
  <td class="value" width="25%">{{i.value}}</td>
</tr>
  </div>
</table>
and it is displaying like this

As can be seen, SMS Date, Sender Name, & Original message is repeating again and again. How can I tranform it so that SMS Date, Sender Name & Original Message could be the table header and their values in table body?
 
     
    