最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Using an ngFor to traverse a 2 dimensional array - Stack Overflow

programmeradmin2浏览0评论

I've been beating my head up against the wall on this one for a while but I finally feel close. What I'm trying to do is read my test data, which goes to a two dimensional array, and print its contents to a table in the html, but I can't figure out how to use an ngfor to loop though that dataset

Here is my typescript file

import { Component } from '@angular/core';
import { Http } from '@angular/http';

@Component({
    selector: 'fetchdata',
    template: require('./fetchdataponent.html')
})
export class FetchDataComponent {
    public tableData: any[][];

    constructor(http: Http) {

        http.get('/api/SampleData/DatatableData').subscribe(result => {
            //This is test data only, could dynamically change
            var arr = [
                { ID: 1, Name: "foo", Email: "[email protected]" },
                { ID: 2, Name: "bar", Email: "[email protected]" },
                { ID: 3, Name: "bar", Email: "[email protected]" }
            ]
            var res = arr.map(function (obj) {
                return Object.keys(obj).map(function (key) {
                    return obj[key];
                });
            });

            this.tableData = res;
            console.log("Table Data")
            console.log(this.tableData)
        });
    }
}

Here is my html which does not work at the moment

<p *ngIf="!tableData"><em>Loading...</em></p>

<table class='table' *ngIf="tableData">
    <tbody>
        <tr *ngFor="let data of tableData; let i = index">
            <td>
            {{ tableData[data][i] }}
            </td>

        </tr>
    </tbody>
</table>

Here is the output from my console.log(this.tableData)

My goal is to have it formatted like this in the table

1 | foo | [email protected]
2 | bar | [email protected]

Preferably I'd like to not use a model or an interface because the data is dynamic, it could change at any time. Does anyone know how to use the ngfor to loop through a two dimensional array and print its contents in the table?

I've been beating my head up against the wall on this one for a while but I finally feel close. What I'm trying to do is read my test data, which goes to a two dimensional array, and print its contents to a table in the html, but I can't figure out how to use an ngfor to loop though that dataset

Here is my typescript file

import { Component } from '@angular/core';
import { Http } from '@angular/http';

@Component({
    selector: 'fetchdata',
    template: require('./fetchdata.ponent.html')
})
export class FetchDataComponent {
    public tableData: any[][];

    constructor(http: Http) {

        http.get('/api/SampleData/DatatableData').subscribe(result => {
            //This is test data only, could dynamically change
            var arr = [
                { ID: 1, Name: "foo", Email: "[email protected]" },
                { ID: 2, Name: "bar", Email: "[email protected]" },
                { ID: 3, Name: "bar", Email: "[email protected]" }
            ]
            var res = arr.map(function (obj) {
                return Object.keys(obj).map(function (key) {
                    return obj[key];
                });
            });

            this.tableData = res;
            console.log("Table Data")
            console.log(this.tableData)
        });
    }
}

Here is my html which does not work at the moment

<p *ngIf="!tableData"><em>Loading...</em></p>

<table class='table' *ngIf="tableData">
    <tbody>
        <tr *ngFor="let data of tableData; let i = index">
            <td>
            {{ tableData[data][i] }}
            </td>

        </tr>
    </tbody>
</table>

Here is the output from my console.log(this.tableData)

My goal is to have it formatted like this in the table

1 | foo | [email protected]
2 | bar | [email protected]

Preferably I'd like to not use a model or an interface because the data is dynamic, it could change at any time. Does anyone know how to use the ngfor to loop through a two dimensional array and print its contents in the table?

Share Improve this question asked Jul 7, 2017 at 19:15 ZachZach 6502 gold badges9 silver badges22 bronze badges 1
  • 2 You can simply use an inner *ngFor="let d of data". index is the counter and specifies how many times your loop is executed. – Marco Luzzara Commented Jul 7, 2017 at 19:26
Add a ment  | 

1 Answer 1

Reset to default 6

Like Marco Luzzara said, you have to use another *ngFor for the nested arrays.

I answer this just to give you a code example:

<table class='table' *ngIf="tableData">
    <tbody>
        <tr *ngFor="let data of tableData; let i = index">
            <td *ngFor="let cell of data">
              {{ cell }}
            </td>
        </tr>
    </tbody>
</table>
发布评论

评论列表(0)

  1. 暂无评论