为什么在Angular2中未定义此字段?

时间:2016-01-19 17:42:39

标签: javascript angular

我在Angular2中有这个模板:

header("Content-type: application/pdf");
header("Content-Length: " . filesize($file));
echo read_file($file);

我将<tr *ngFor="#user of users"> <td> <label *ngIf="editing != user.id">{{ user.name }}</label> <input #username *ngIf="editing == user.id" value="{{ user.name }}" /> </td> <td> <label *ngIf="editing != user.id">{{ user.lastname }}</label> <input #lastname *ngIf="editing == user.id" value="{{ user.lastname }}" /> </td> <td> <label *ngIf="editing != user.id">{{ user.gender | genderPipe }}</label> <select #gender *ngIf="editing == user.id" value="{{ user.gender }}"> <option value="0"> {{ 0 | genderPipe }} </option> <option value="1"> {{ 1 | genderPipe }} </option> </select> </td> <td> <img (click)="removeUser(user.id)" width="16px" class="pull-left" src="/images/close.png" /> <img (click)="editUser(user.id)" *ngIf="editing != user.id" class="pull-left" src="/images/edit.png" /> <img (click)="saveUser(user.id, username)" *ngIf="editing == user.id" class="pull-left" src="/images/save.png" /> </td> 属性设置为第一个输入。 在#username发送saveUser()参数时,usernameundefined

为什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您应该使用[(ngModel)]更新属于它的所有属性的值,而不是使用带有value插值的{{}}属性。

<强>标记

<tr *ngFor="#user of users">
    <td>
        <label *ngIf="editing != user.id">{{ user.name }}</label>
        <input *ngIf="editing == user.id" [(ngModel)]="user.name" />
    </td>
    .....
    <td>
        .....
        <img (click)="saveUser(user)" *ngIf="editing == user.id" class="pull-left" src="/images/save.png" />
    </td>