Angular2 - *ngFor和*ngIf对同一元素产生错误

Ees*_*esa 10 javascript angular

我有一组用户,我想只在桌面上显示男性用户.以下是我试图实现这一目标的方法:

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);
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

EXCEPTION:TypeError:无法读取未定义的属性"gender"

正如你所看到我在同一个元素上使用*ngFor和*ngIf即tr.为什么我不能在同一个元素上使用*ngFor和*ngIf?有没有其他方法来实现这一目标?我在plunker上重新产生了这个问题,你可以在控制台上看到错误.

Thi*_*ier 25

实际上,不支持同一元素上的ngIf和ngFor.您可以使用扩展语法ngIf来实现此目的:

<tr *ngFor="#user of users">
  <template [ngIf]="user.gender == 'male'">
    <td>{{user.name}}</td>
    <td>{{user.gender}}</td>
  </template>
</tr>
Run Code Online (Sandbox Code Playgroud)

  • 天哪,非常感谢,我在调试和 ngFor 和 ngIf 的相同元素上遇到了困难,这救了我:) (2认同)