如何不从我的数组中删除最后一项

时间:2017-03-07 23:44:18

标签: arrays angular

我在从数组中删除项目时遇到问题。我目前的一段代码是删除该项目。但它总是最后一个而不是我选择的那个。我找到了一些线索,需要根据-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);
}

2 个答案:

答案 0 :(得分:1)

您的代码中的问题是您通过对象引用进行比较,所以请执行以下操作:

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

我假设todoText参数是一个具有text属性的对象。

如果您想通过文字删除:

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

答案 1 :(得分: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);
}