2017-02-17 2 views
1

私は* ngForを持っています。 forの中には、友人の名前を格納する入力ボックスがあります。私は、ボタンをクリックしたときに友人の更新名の値を保存したいと思いますが、これは期待通りに動作しない:入力内の値は角2でバインディングされていません

@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) {} 
} 

期待は保存方法が友人オブジェクトと呼ばれることになるということです名前の新しい値が含まれています。しかし、それは古い名前を渡すだけです。

Angular2の仕組みに根本的な何かが欠けているような気がします。

Plunkrhttp://plnkr.co/edit/blYzEW0JufOcPwIwzoWQ?p=preview

+0

は、古い名前をsaveメソッドに渡すため、古い名前を渡します。 – Kilmazing

答えて

1

あなたが変更イベントを処理する必要がある - それはfriend.nameを割り当て変更したとき:ngModelと結合

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

や設定、双方向データ:

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

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

関連する問題