angular - splice 无法删除 JavaScript 中的第一个元素
在 Angular2 中,我的 HTML 正在调用 JavaScript 中的 removeThisForm。事件是一个文件数组对象。对于文件数组中的每个对象,我在 Angular2 中生成一个表单。
(click)=removeThisForm(event)
在 JavaScript 中,我正在尝试删除传入的文件。
removeThisForm(file) {
var removableIndex = arr.indexOf(file);
if (removeIndex >= 0) {
arr = arr.splice(removableIndex);
}
我能够移除传入的任何表单,除了第一个。我尝试了 shift()、slice() 和 splice(0,1)。当我使用 splice(0,1) 时,我收到了“表单提交已取消,因为表单未连接”的错误。
答案#1
您遗漏了向 Array.prototype.splice 方法传递第二个参数(一个整数,表示要删除的元素数量)。尝试如下:
removeThisForm(file) {
var removableIndex = arr.indexOf(file);
if (removeIndex >= 0) {
arr.splice(removableIndex, 1);
}
}
此外,Array.prototype.splice 方法会返回一个包含已删除元素的数组。因此,你不能说:
arr = arr.splice(removableIndex, 1);
因为它会使用 Array.prototype.splice 方法的返回值覆盖你的 arr。
