2017-04-24 8 views
2

次のシナリオはjavascriptではかなり簡単ですが、Angularで作業するにはいくつかの問題があります。 ngForで角2:* ngForの中で

array a = ("id" = 0, name = random(), column = 1, 2 or 3, blockrow= 1, 2 or 3) 

は、私が今そこグリッドこのコラムでcolumsとブロックで離れ離れのうち、すべての要素を作成しよう:

は、私のような配列を得ました。だから私の現在のコード(作品が厄介です)。このような

<div *ngFor="let a of a"> 
 
    <template [ngIf]="a.column=='1'"> 
 
    <div *ngFor="let b of a"> 
 
     <template [ngIf]="b.blockrow=='1'"> 
 
     Block 1 in column 1{{b.name}} 
 
     </template> 
 
    </div> 
 
    <div *ngFor="let b of a"> 
 
     <template [ngIf]="b.blockrow=='2'"> 
 
     Block 2 in column 1{{b.name}} 
 
     </template> 
 
    </div> 
 
    <div *ngFor="let b of a"> 
 
     <template [ngIf]="b.blockrow=='3'"> 
 
     Block 3 in column 1{{b.name}} 
 
     </template> 
 
    </div> 
 
    </template> 
 
</div>

は何か、私は列ごとに実行しません。つまり、同じアレイを12回繰り返します。もっと美しくする方法はありますか?

答えて

2

[ngIf]、使用した後、右側の座標での要素を持つ配列の配列を構築するためにJavaScriptを使用する必要がありますngFor内部*番号:

<div *ngFor="let row of rows"> 
    <div *ngFor="let col of row"> 
    Block {{col.blockrow}} in column {{col.column}} {{col.name}} 
    </div> 
</div> 

複数のブロックが同じ座標を持つ場合、3番目の* ngForが必要になることがあります。

+0

だから私は多次元配列でこの方法で作業できます。パーフェクト、これは私が欲しかったものです。 – Doomenik

0

あなたは間違った構文を使用していること* *ngIfの代わりに、あなたのコンポーネントで

<div *ngFor="let a of a"> 
    <template *ngIf="a.column=='1'"> 
    <div *ngFor="let b of a"> 
     <template *ngIf="b.blockrow=='1'"> 
     Block 1 in column 1{{b.name}} 
     </template> 
    </div> 
    <div *ngFor="let b of a"> 
     <template *ngIf="b.blockrow=='2'"> 
     Block 2 in column 1{{b.name}} 
     </template> 
    </div> 
    <div *ngFor="let b of a"> 
     <template *ngIf="b.blockrow=='3'"> 
     Block 3 in column 1{{b.name}} 
     </template> 
    </div> 
    </template> 
</div> 
+0

エディタは角度1を使用しますが、これは私の問題ではありません。ループを頻繁に実行する方法があるかどうかを知りたいだけです。 – Doomenik

+0

私はあなたを得ていません – Aravind

+0

私の例では、同じアレイを4回ループします。それが完全に機能するようにするには、これは3回必要です。つまり、同じアレイを12回ループするトラフです。私の目では、これは非常に非効率的です。プレーンなJSでは、配列を1度だけ通って同じことができます。だから私の質問は、コードのこのブロックをより良くする方法があるということですか?何かが好きならb.blockrow == 1 - > div1に追加する、b.blockrow == 2をdivに追加する2 – Doomenik