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