2017-11-02 14 views
1

なぜエラーが発生するのか分かりません。私の地図は変更されていません 。角度2のマップキーで反復処理中にチェックされた後に式が変更されました

チェックした後の表現が変更されました。以前の値: '[オブジェクト マップイテレータ]'現在値:「[オブジェクト地図イテレータ]」

<tr *ngFor="let author of bindedAuthors.keys()"> 
    <td> {{author}}</td> 
    <td> 
    <button (click)="onUpdate(author)" 
      class="btn gl-btn-primary">Update 
    </button> 
    </td> 
    <td> 
    <button (click)="onDelete(author)" class="btn gl-btn-default">Delete</button> 
    </td> 
</tr> 

結果が期待されているが、すべてのデータが示されているが、このエラーは、コンソールたびに氾濫しています。

答えて

3

テンプレート内のメソッド...keys()にバインドしないでください。 変更検出が実行されるたびに呼び出されます。 object.keys()が呼び出されるたびに新しいオブジェクトが返され、Angularはこれを予期しない変更として認識し、エラーにつながります。

あなたはアドバイスを

someMethod() { 
    this.bindedAuthorsKeys = this.bindedAuthors.keys(); 
} 
*ngFor="let author of bindedAuthorsKeys" 
+0

おかげのようにそれを修正することができます!それは私の仕事ですが、ちょっとした修正があります。 bindedAuthorsはMapであり、keys()メソッドは反復可能な型を返します。また、Iterableを配列に変換しないと(Array.from()を使用します)、動作しません。変換せずに空のテーブルを取得します。 –

2
this.keysOfObject = Object.keys(---) <---put your object or array inside. 

    Now, 
    <tr *ngFor="let author of keysOfObject"> 
    ' 
    ' 
    ' 
    </tr> 
関連する問題