从ControlArray中删除多个控件

时间:2016-04-25 11:20:15

标签: angular

我有一个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);
           }

但显然这不会起作用,因为每次从数组中删除一个项目时,索引都会改变!!!

提前致谢。

2 个答案:

答案 0 :(得分:6)

没有太多相关的角度,但通常当你在一个循环中拼接一个数组时,你想要用你的计数器向后移动,这样下一个索引i--仍将引用数组中的原始元素

for(var i=myControls.length;i-->0;){
    myControls.removeAt(i);
}

答案 1 :(得分:5)

我没有检查是否有更好的解决方案,但这也应该有效:

while(myControl.length) {
  myControls.removeAt(0);
}