2017-03-21 100 views
3

在angular2中,我的HTML在javascript中调用removeThisForm。该事件是File Array的一个对象。对于File Array中的每个对象,我都会生成一个angular2中的表单。splice无法删除javascript中的第一个元素

(click)=removeThisForm(event) 

在JavaScript中,我试图删除正在通过在文件。

removeThisForm(file) { 
    var removableIndex = arr.indexOf(file); 
    if (removeIndex >= 0) { 
     arr = arr.splice(removableIndex); 
    } 

我能够消除任何形式的传递,除了第一个。我试过shift(),slice()和splice(0,1)。当我拼接(0,1)时,出现“表单提交被取消,因为表单未连接”的错误。

+0

试试'arr.splice(removableIndex,1);' –

回答

5

您省略了将第二个参数传递给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

+1

呵呵。我不知道它会返回一个已删除元素的数组。谢谢! –

相关问题