2017-03-07 46 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

不僅通過todoText你的刪除方法,通過整個todo,因此,如果您的模板看起來是這樣的:

<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

在你的代碼的問題是,你是通過對象引用比較,這樣做這個:

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); 
} 
相關問題