2017-03-21 7 views
3

angular2에서 내 HTML은 javascript에서 removeThisForm을 호출합니다. 이 이벤트는 파일 배열의 객체입니다. 파일 배열의 각 객체에 대해 angular2에서 양식을 생성합니다. 자바 스크립트에서 splice가 자바 스크립트의 첫 번째 요소를 제거 할 수 없습니다.

(click)=removeThisForm(event) 

, 내가 전달되는 파일을 제거하려합니다.
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); 
    } 
} 

또한, 삭제 된 요소를 포함하는 배열을 반환합니다. 따라서, 당신은 말할 수 없다 :

arr = arr.splice(removableIndex, 1); 

을가 Array.prototype.splice 방법의 반환 값으로 arr 우선합니다한다.

+1

오 하하. 나는 그것이 삭제 된 요소의 배열을 반환 모르겠다. 감사! –