2017-03-07 10 views
1

アレイからアイテムを削除する際に問題があります。現在のコードでアイテムを削除しています。しかし、それはいつも私が選ぶものではなく最後のものです。私は、インデックスが照らしてチェックする必要があることをいくつかの手がかりを発見した-1あなたのコードに問題はあなたがオブジェクト参照で比較されていることであるアレイから最後のアイテムを削除しない方法

アレイ

ngOnInit() { 
    this.todos = [ 
     { 
      text: 'Pick up' 
     }, 
     { 
      text: 'Meeting' 
     }, 
     { 
      text: 'Dish washing' 
     } 
    ]; 
} 

機能

addTodo(){ 
    this.todos.push({ 
     text: this.text 
    }); 
} 
deleteTodo(todoText){ 
    this.todos.splice(this.todos.indexOf(todoText), 1); 
} 
+0

o項目そのものではなく、テキスト –

答えて

1

は、あなたのテンプレートは次のようになりますので、もし、全体todoを渡し、自分の削除方法にのみtodoTextを渡さないでください:

<div *ngFor="let todo of todos" (click)="deleteTodo(todo)"> 
    {{todo.text}} 
</div> 

あなたの削除メソッドはあなたのTSで正常に動作します:

deleteTodo(todo){ 
    this.todos.splice(this.todos.indexOf(todo), 1); 
} 
+0

ありがとう! – Damien

+0

私はお手伝いできることを嬉しく思います。 :) – Alex

1

、そうthis:

deleteTodo(todoText){ 
    this.todos 
     .splice(this.todos.map(todo=>todo.text) 
     .indexOf(todoText.text), 1); 
    } 

私は、todoText引数が適切なテキストを持つオブジェクトであると仮定していますty。

テキストで削除する場合:

deleteTodo(text){ 
     this.todos 
      .splice(this.todos.map(todo=>todo.text) 
      .indexOf(text), 1); 
} 
関連する問題