2016-05-04 12 views
5

私はユーザーの配列を持っており、男性のユーザーのみをテーブルに表示したい。Angular2 - * ngForと* ngIfで同じ要素を生成するエラー

import {Component} from 'angular2/core'; 
import {bootstrap} from 'angular2/platform/browser'; 

@Component({ 
    selector: 'app', 
    template:` 
    <table> 
     <tbody> 
      <tr *ngFor="#user of users" *ngIf="user.gender == 'male' " > 
       <td>{{user.name}}</td> 
       <td>{{user.gender}}</td> 
      </tr> 
     </tbody> 
    </table> 
    ` 
}) 
export class AppCmp{ 
    public users = [ 
     { 
      name: "Eesa", 
      gender: "male" 
     }, 
     { 
      name: "Abdullah", 
      gender: "male" 
     }, 
     { 
      name: "Javeria", 
      gender: "female" 
     } 
    ] 
} 

bootstrap(AppCmp); 

が、私は次のエラーを取得しています:

EXCEPTION: TypeError: Cannot read property 'gender' of undefined

あなたは私がtrすなわち、同じ要素に* ngForと* ngIfを使用しています見ることができるようにここで私はこれを達成しようとしている方法です。同じ要素に* ngForと* ngIfを使用できないのはなぜですか?これを達成する他の方法はありますか?私は問題を再現しましたhere on plunkerあなたはコンソールでエラーを見ることができます。

答えて

17

実際、同じ要素のngIfとngForはサポートされていません。あなたはこれを実装することができるようにngIfの拡張構文を使用できます。

<tr *ngFor="#user of users"> 
    <template [ngIf]="user.gender == 'male'"> 
    <td>{{user.name}}</td> 
    <td>{{user.gender}}</td> 
    </template> 
</tr> 
+1

OMGのおかげでそんなに私は苦労のデバッグを有し、かつngForとngIfたのと同じ要素にこれは私を救った:) – commonSenseCode

+0

あなたは天才+です1 –