Angular2でこれと同等のことをする必要があります。
<?php
foreach ($somethings as $something) {
foreach ($something->children as $child) {
echo '<tr>...</tr>';
}
}
これはngForで実現でき、<table>
と<tr>
の間に新しい要素を追加しませんか?
あなたが望むものに似ているかもしれないサンプルがあります:
<table id="spreadsheet">
<tr *ngFor="let row of visibleRows">
<td class="row-number-column">{{row.rowIndex}}</td>
<td *ngFor="let col of row.columns">
<input data-id="{{col.rowIndex}}-{{col.columnIndex}}" [value]="col.cellValue" (input)="col.cellValue = $event.target.value" (click)="model.selectColumn(col)" (keyup)="navigate($event)" />
</td>
</tr>
</table>
これを使用して、スプレッドシートのようなグリッドを次のようにレンダリングします。 http://www.syntaxsuccess.com/angular-2-samples/#/demo/spreadsheet
テーブルの行を描画するために2つ以上のforeachループが必要な場合は、次のようにする必要があります。
<template ngFor let-rule [ngForOf]="model.rules" let-ruleIndex="index">
<template ngFor let-clause [ngForOf]="rule.clauses" let-clauseIndex="index">
<tr>
<td>{{clause.name}}</td>
</tr>
</template>
</template>
ここに見られるngFor構文の「テンプレート」形式を使用します。単純な*ngFor
バージョンよりも少し冗長ですが、これは(意図するまで)出力HTMLなしでループを実現する方法です。 1つの例外:<table>
内でhtmlコメントを取得できますが、大丈夫だと思います。動作するプランカーは次のとおりです。 http://plnkr.co/edit/KLJFEQlwelPJfNZYVHrO?p=preview
@Component({
selector: 'my-app',
providers: [],
directives: [],
template: `
<table>
<template ngFor #something [ngForOf]="somethings" #i="index">
<template ngFor #child [ngForOf]="something.children" #j="index">
<tr>{{child}}</tr>
</template>
</template>
</table>
`
})
export class App {
private somethings: string[][] = [
{children: ['foo1', 'bar1', 'baz1']},
{children: ['foo2', 'bar2', 'baz2']},
{children: ['foo3', 'bar3', 'baz3']},
]
}
テンプレートは私のために動作しませんが、ngForOfでng-templateがトリックを行います:
<ng-template ngFor let-parent [ngForOf]="parent" >
<tr *ngFor="let child of parent.children">
<td>
{{ child.field1 }}
</td>
<td>
{{ child.field2 }}
</td>
<td> ... and so one ... </td>
</tr>
</ng-template>
私はちょうど私のデータベース内の任意のテーブルのデータを表示しようとしています。私はこのようにしました:
Table.component.tsのAPIへのTypeScript Ajax呼び出し:
http.get<ITable>(url, params).subscribe(result => {
this.tables = result;
}, error => console.error(error));
私のITable
interface ITable {
tableName: string;
tableColumns: Array<string>;
tableDatas: Array<Array<any>>;
}
私のtable.component.html
<table class='table' *ngIf="tables">
<thead>
<tr>
<th *ngFor="let tableColumn of tables.tableColumns">{{ tableColumn }}</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let tableData of tables.tableDatas">
<td *ngFor="let data of tableData">{{ data }}</td>
</tr>
</tbody>
</table>