Home > Software design >  Angular Array display on html
Angular Array display on html

Time:07-04

i created a array that stores arrays with 3 indexes into it. a example looks like

(3) [Array(3), Array(3), Array(3)]
0: (3) [199.4, 10.5, 19]
1: (3) [47.2, 2.1, 23]
2: (3) [133.6, 5.3, 25]

in my html i want to display it follwing way

size: 199,4 
size2: 10,5
size 3: 19

my html looks like this:

<div [hidden]="isShowDiv" >
        <div  *ngFor="let calculation of arr_name ">
            <a   aria-current="true">
              <div >
                <h5 >{{arr_name}}</h5>             
              </div>
              
            </a>

now to my question, i know i have to display the array length with 3, via *ngFor="let calculation of arr_name "> because im storing inside my array 3 other arrays, but when i do it i get following output:

199.4,10.5,19,47.2,2.1,23,133.6,5.3,25
199.4,10.5,19,47.2,2.1,23,133.6,5.3,25
199.4,10.5,19,47.2,2.1,23,133.6,5.3,25

i also know that i can declare the html via {{arr_name[0][0]}} what diplays me 199.4, but the array size could increase, and i want to display all values. is there a common way?

my.componet.ts:

import { Component, OnInit } from '@angular/core';
import { Position } from '../position';
import { Positions } from '../mock-positions';
import { Calculations } from '../mock-calculations';
import { Router } from '@angular/router';
import { Calc } from '../calc';

@Component({
  selector: 'app-create-position',
  templateUrl: './create-position.component.html',
  styleUrls: ['./create-position.component.css']
})
export class CreatePositionComponent implements OnInit  {

  isShowDiv = true;

  constructor(private router:Router) { }

  arr_name:number[][]=[  ]

  ngOnInit(): void {

  }

  calculate( ) {
    
      this.isShowDiv = !this.isShowDiv;
    
    this.sortArray()

  for(let i = 0; i < Positions.length - 1; i  ) {


    //console.log(Positions[i].lat  " "  Positions[i   1].lat)

    var dy_ = 111.3 * (Positions[i].lat - Positions[i   1].lat)

    var lat_ = (Positions[i].lat   Positions[i   1].lat) / 2 * 0.01745

    var dx_ = 111.3 * Math.cos(lat_) * (Positions[i].lng - Positions[i   1].lng)

    var distance_ = Math.sqrt(dx_ * dx_   dy_ * dy_)

    var distance_ = distance_ * 1000 

    var distanceRounded: number = distance_.toFixed(1);

    var startTime = Positions[i].time.toString()
    var endTime = Positions[i 1].time.toString()

    var starTimeCalc = new Date(startTime)
    var endTimeCalc = new Date(endTime)

    var sBetweenPos = endTimeCalc.valueOf() - starTimeCalc.valueOf();

    sBetweenPos= sBetweenPos * 0.001

    var duration = distanceRounded / sBetweenPos
    var durationRounded: number = duration.toFixed(1)
  
    this.calc_.distanceRounded=distanceRounded
    this.calc_.durationRounded=durationRounded
    this.calc_.sBetweenPos=sBetweenPos

    this.arr_name.push([this.calc_.distanceRounded, this.calc_.durationRounded,this.calc_.sBetweenPos])

}

console.log(this.arr_name)

  }

}



CodePudding user response:

if you want to access nested arrays, you need to do something like this:

<div *ngFor="let calculation of arr_name">
    <div *ngFor="let inner of calculation; let i = index">
        Size {{ i }}: {{ inner }}
    </div>
</div>

also recommend abstracting your calculations into a service file.

  • Related