输入中的值未在Angular 2

时间:2017-02-17 04:52:15

标签: angular

我有一个* ngFor循环我所有的朋友。在for中我有一个输入框,用于存储朋友的名字。我想在单击按钮时存储朋友的更新名称的值,但这不能按预期工作:

@Component({
  selector: 'my-app',
  template: `
  <div *ngFor="let friend of friends">
    <input type="text" [value]="friend.name">
    <button (click)="save(friend)" type="submit">save</button>
  </div>`,
  providers: []
})
export class App {
  friends: Friend[] = new Array(new Friend("Alice"), new Friend("Bob"));

  save(friend: Friend) {
    console.log(friend.name);
  }
}

export class Friend {
  constructor(public name: string) {}
}

期望使用包含名称新值的friend对象调用save方法。但它只是传递了旧名称。

我觉得我错过了Angular2工作方式的基本内容。

Plunkr http://plnkr.co/edit/blYzEW0JufOcPwIwzoWQ?p=preview

1 个答案:

答案 0 :(得分:1)

您需要处理更改事件 - 更改时指定friend.name

<input type="text" (change)='friend.name=$event.target.value' [value]="friend.name">

或使用ngModel设置双向数据绑定:

<input type="text" [(ngModel)]="friend.name">

Demp Plnkr:http://plnkr.co/edit/49tWBSyZAIToreQKyOh6?p=preview