*ngFor「n」個のセルごとに新しい行を作成します

半蔵

テーブルの要素を動的に作成しようとしていますが、疑問があります。

<tr>たとえば、4つごとに新しいものを作成してから、新しいものを作成し<td>続けるにはどうすればよいですか<td>

 <table>
    <tr>
    <td class="category-card" *ngFor= "let category of categories">

             <img class="product-card-image" src="{{category.icon}}">
             <span class="barImage">{{category.title}}</span>
    </td>
    </table>

編集:

<table>     
<ng-template *ngFor="let category of categories; let i = index">
            <tr *ngIf="(i % 4) == 0">
                <td class="product-card">
                    <img class="product-card-image" src="/app/assets/img/{{category.icon}}.png">
                    <span class="barImage">{{category.titulo}}</span>
                </td>
            </tr>
        </ng-template>
    </table>

EDIT2:追加しました

<table [outerHTML]="categorias | dynamicTablePipe"></table> on my html

これは外部クラスです (NGModule で宣言しました)

@Pipe({
    name: 'dynamicTablePipe'
})
export class DynamicTablePipe implements PipeTransform{
    transform(contents) {
        let template = ``;
        let index = 0;
        for (let content of contents) {
            let currentTemplate = ``;
            if (index === 0) {
                // check if first record
                currentTemplate = `
                    <tr>
                        <td class="product-card">
                            <img class="product-card-image" src="/app/assets/img/${content.icono}.png">
                            <span class="barImage">${content.titulo}</span>
                    </td>`;
            } else if ((index % 4) === 0) {
                // check if multiple of 4
                currentTemplate = `
                    </tr>
                    <tr>
                   <td class="product-card">
                            <img class="product-card-image" src="/app/assets/img/${content.icono}.png">
                            <span class="barImage">${content.titulo}</span>
                    </td>`;
            } else {
                // normal row
                currentTemplate = `
                    <td class="product-card">
                            <img class="product-card-image" src="/app/assets/img/${content.icono}.png">
                            <span class="barImage">${content.titulo}</span>
                    </td>`;
            }
            index++;
            template += currentTemplate;
        }
        return template;
    }
}

パイプ内のコードは正常に機能します。これは、最後に形成されるテンプレート文字列です。

 <tr>
                            <td class="product-card">
                                <img class="product-card-image" src="/app/assets/img/smartphone.png">
                                <span class="barImage">Telefonia</span>
                        </td>
                        <td class="product-card">
                                <img class="product-card-image" src="/app/assets/img/gamepad.png">
                                <span class="barImage">Videojuegos</span>
                        </td>
                        <td class="product-card">
                                <img class="product-card-image" src="/app/assets/img/laptop.png">
                                <span class="barImage">Portatiles</span>
                        </td>
                        <td class="product-card">
                                <img class="product-card-image" src="/app/assets/img/speaker.png">
                                <span class="barImage">Reproductores</span>
                        </td>
                        </tr>
                        <tr>
                       <td class="product-card">
                                <img class="product-card-image" src="/app/assets/img/link.png">
                                <span class="barImage">Redes</span>
                        </td></tr>

問題は戻る瞬間にある

ありがとう

SrAxi

代わりに使用しての*ngFor<tr>、または<td>、それを使用<template>してによってはindex、あなたがレンダリングすることを選んだ可能性が見つかるか、レコードの量<td>またはを<tr>

この正確なことを説明しているこのチュートリアル/ガイドに従ってください: https://toddmotto.com/angular-ngfor-template-element

<ng-template>Angular v4 または<template>Angular v2に使用すること思い出してください

最終的には、次のようなものになります。

<ng-template ngFor let-i="index" let-c="count" let-contact [ngForOf]="contacts | async">
    <tr *ngIf="if((i % 4) == 0)">
        // Check if index is multiple of 4
    </tr>
</ng-template>

この最後の例は、リンクしたチュートリアル/ガイドの最終コードです。私はそれを使用したので、この時点に到達すると、フレンドリーなコードが得られます。

オプション 2:

を使用<template>して、データをレンダリングするディレクティブを作成できます。

したがって、次のようなものがあります。

<template [myDirective]="myData"></template>

また、myDirectiveロジックでは、データ ループ内のインデックスを使用してデータをレンダリングする方法を選択しました。

オプション 3 - @パイプ:

@Pipe右のいずれかになります!次のようなものを試すことができます。

@Pipe({
    name: 'renderTable'
})
class RenderTable {
    transform(content) {
        let template = ``;
        let index = 0;
        for (let row in content) {
            let currentTemplate = ``;
            if (index === 0) {
                // check if first record
                currentTemplate = `
                    <tr>
                        <td>${row}</td>`;
            } else if ((index % 4) === 0) {
                // check if multiple of 4
                currentTemplate = `
                    </tr>
                    <tr>
                    <td>${row}</td>`;
            } else {
                // normal row
                currentTemplate = `
                    <td>${row}</td>`;
            }
            index++;
            template += currentTemplate;
        }
        return template;
    }
}

あなたのテーブルには、次のようなものがあります:

<table [outerHTML]="categories | renderTable"></table>

更新:

で試してくださいinnerHTML:

<table [innerHTML]="categories | renderTable"></table>

更新 2:

スタイル崩れ問題の解決策はこちら!それを見つけた!

RC.1 では、バインディング構文を使用していくつかのスタイルを追加できません

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ループ内の3列ごとに新しい行を作成します

分類Dev

入力した文字列の改行文字ごとに、結果セットに新しい行を作成します

分類Dev

40行のファイルから2行ごとに抽出し、新しいファイルを作成します

分類Dev

SparkSQLの違いの分ごとに新しい行を作成します

分類Dev

N行ごとに新しい行を挿入しますか?

分類Dev

N行ごとに新しい行を挿入しますか?

分類Dev

`anaconda`は新しい環境ごとに個別のPYTHONPATH変数を作成しますか?

分類Dev

`anaconda`は新しい環境ごとに個別のPYTHONPATH変数を作成しますか?

分類Dev

空でない列ごとに新しい行を作成します

分類Dev

テーブルに新しい行を追加し、ドロップダウンボタンごとに個別の状態を設定します

分類Dev

R:列の値を行ごとに合計し、新しい列を作成します

分類Dev

行ごとに2つの列から重複を選択し、Rで新しい変数を作成します

分類Dev

Apache2(またはNginx)でのHttpリクエストの処理。N個のリクエストごとまたはN個のリクエストのセットに対して新しいプロセスが作成されますか?

分類Dev

ajax / codeigniter 出力 4 列ごとに新しい行を作成します

分類Dev

範囲内のセルごとに新しいシートを作成し、その値を使用して名前を変更します

分類Dev

条件に基づいて列を更新し、更新ごとに別のテーブルに新しい行を作成します

分類Dev

awkは、あるファイルの行を新しい列として別のファイルのn行ごとに挿入します

分類Dev

パンダn行ごとに新しい行を挿入します

分類Dev

Perlはn文字と新しい行ごとに分割します

分類Dev

ExcelVBAのセレンによるGoogle検索ごとに新しいタブを作成します

分類Dev

MongoDB4.2の日ごとに最もリセットされたN個のドキュメントに新しいフィールドを追加する

分類Dev

行ごとに最後のN個の関連行をクエリします

分類Dev

グループごとに、別の列の最後の値を保持する新しい列を作成します

分類Dev

グループごとに特定の列の特定の行の値に基づいて新しい変数を作成します

分類Dev

セルごとに新しいオブジェクトを作成する

分類Dev

Python Pandas:新しい列のn行ごとにn回繰り返されることを意味します

分類Dev

ngForを使用して、行に2つの要素を追加してから、新しい行を作成します

分類Dev

10サイクルごとの値に基づいてrに新しい列を作成します

分類Dev

特定の範囲の空でないセルごとに新しい行を出力するための式

Related 関連記事

  1. 1

    ループ内の3列ごとに新しい行を作成します

  2. 2

    入力した文字列の改行文字ごとに、結果セットに新しい行を作成します

  3. 3

    40行のファイルから2行ごとに抽出し、新しいファイルを作成します

  4. 4

    SparkSQLの違いの分ごとに新しい行を作成します

  5. 5

    N行ごとに新しい行を挿入しますか?

  6. 6

    N行ごとに新しい行を挿入しますか?

  7. 7

    `anaconda`は新しい環境ごとに個別のPYTHONPATH変数を作成しますか?

  8. 8

    `anaconda`は新しい環境ごとに個別のPYTHONPATH変数を作成しますか?

  9. 9

    空でない列ごとに新しい行を作成します

  10. 10

    テーブルに新しい行を追加し、ドロップダウンボタンごとに個別の状態を設定します

  11. 11

    R:列の値を行ごとに合計し、新しい列を作成します

  12. 12

    行ごとに2つの列から重複を選択し、Rで新しい変数を作成します

  13. 13

    Apache2(またはNginx)でのHttpリクエストの処理。N個のリクエストごとまたはN個のリクエストのセットに対して新しいプロセスが作成されますか?

  14. 14

    ajax / codeigniter 出力 4 列ごとに新しい行を作成します

  15. 15

    範囲内のセルごとに新しいシートを作成し、その値を使用して名前を変更します

  16. 16

    条件に基づいて列を更新し、更新ごとに別のテーブルに新しい行を作成します

  17. 17

    awkは、あるファイルの行を新しい列として別のファイルのn行ごとに挿入します

  18. 18

    パンダn行ごとに新しい行を挿入します

  19. 19

    Perlはn文字と新しい行ごとに分割します

  20. 20

    ExcelVBAのセレンによるGoogle検索ごとに新しいタブを作成します

  21. 21

    MongoDB4.2の日ごとに最もリセットされたN個のドキュメントに新しいフィールドを追加する

  22. 22

    行ごとに最後のN個の関連行をクエリします

  23. 23

    グループごとに、別の列の最後の値を保持する新しい列を作成します

  24. 24

    グループごとに特定の列の特定の行の値に基づいて新しい変数を作成します

  25. 25

    セルごとに新しいオブジェクトを作成する

  26. 26

    Python Pandas:新しい列のn行ごとにn回繰り返されることを意味します

  27. 27

    ngForを使用して、行に2つの要素を追加してから、新しい行を作成します

  28. 28

    10サイクルごとの値に基づいてrに新しい列を作成します

  29. 29

    特定の範囲の空でないセルごとに新しい行を出力するための式

ホットタグ

アーカイブ