2017-04-06 6 views
1

AngulardartにList<List<int>>を表すテーブルを作成しようとしています。Angulardartでネストされたリストを持つテーブルを作成する

これは私のテンプレートファイルの内容です:

<table> 
    <tbody> 
     <tr *ngFor="#row of cells"> 
      <td *ngFor="#cell of row"> 
       <input type="number" #cell (keyup)="0"/> 
      </td> 
     </tr> 
    </tbody> 
</table> 

そして、リストは次のように初期化されます、しかし

class Grid { 
    const GRID_SIZE = 9; 
    List<List<int>> cells = new List(GRID_SIZE); 

    Grid() { 
     cells.forEach((x) => x = new List(GRID_SIZE)); 
    } 
} 

レンダリングされたHTMLに、私は唯一の9個の<tr>空のタグを参照してください、と内部には<td>がありません。

私には何が欠けていますか?正しい初期化コードは、それはゼロのリストで満たされていることが問題となっている初期化コードのみGRID_SIZE NULLでメインリストを埋め

cells.fillRange(0, cells.length, new List.filled(GRID_SIZE, 0)); 

です:

答えて

5

は、問題は、グリッド初期化していたが判明します。あなたはこの行を呼び出すとき

0

:あなたは、xの内側に介在されていませんが、あなたは新しいものを作成しました:

cells.forEach((x) => x = new List(GRID_SIZE)); 

をあなたが実際に新しい値でのxを交換しています。

List<String> myList = ['my', 'original', 'list']; 

void yourForLoopFunctionSimulation(List<String> x) { 
    x = new List.filled(GRID_SIZE, 0); 
    //you can work with the new x value here, but it won't change the argument that was passed to you 
} 

//if you run 
yourForLoopFunctionSimulation(myList); 
print(myList); // result : ['my', 'original', 'list']; 
関連する問題