我有一个ControlArray,在某些时候我需要从中移除多个项目,或者更简单,只需清除/清空整个数组。
这是当前的数组:
let myControls = new ControlArray([]);
// Add some items to this array :
for(let i = 0 ; i<5 ; i++){
myControls.push({
firstName : new Control( '' , Validators.required ) ,
lastName : new Control( '' , Validators.required ) ,
})
}
// After this my controlArray has 5 controls and
//everything works in the view properly .
现在我有一个按钮,它有一个(click)事件绑定到它,我想从myControls清除(删除所有控件),但我找不到解决方案。
在文档中,有一个 myControl。 removeAt(索引) 函数,它只删除一个项目,但没有任何函数可以删除所有项目。< / p>
另外,我试过这个:
for(let i = 0 ; i<myControls.length ; i++){
myControls.removeAt(i);
}
但显然这不会起作用,因为每次从数组中删除一个项目时,索引都会改变!!!
提前致谢。
答案 0 :(得分:6)
没有太多相关的角度,但通常当你在一个循环中拼接一个数组时,你想要用你的计数器向后移动,这样下一个索引i--
仍将引用数组中的原始元素
for(var i=myControls.length;i-->0;){
myControls.removeAt(i);
}
答案 1 :(得分:5)
我没有检查是否有更好的解决方案,但这也应该有效:
while(myControl.length) {
myControls.removeAt(0);
}