我有一个* 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工作方式的基本内容。
答案 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