Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Angular 2应用程序中通过切换复选框处理阵列构建_Javascript_Arrays_Angular_Typescript_Checkbox - Fatal编程技术网

Javascript 在Angular 2应用程序中通过切换复选框处理阵列构建

Javascript 在Angular 2应用程序中通过切换复选框处理阵列构建,javascript,arrays,angular,typescript,checkbox,Javascript,Arrays,Angular,Typescript,Checkbox,我试图想出一个简单的切换功能,其中阵列是建立在通过我的Angular 2应用程序中的复选框发送的选择的基础上。我似乎记得在哪里可以通过将一个函数设置为等于它的相反值或类似的方式来处理切换。以下是我用于添加和删除数组元素的两个函数: private onItemSelected(item) { if (item) { this.itemsArray.push(item); console.log(this.itemsArray); r

我试图想出一个简单的切换功能,其中阵列是建立在通过我的Angular 2应用程序中的复选框发送的选择的基础上。我似乎记得在哪里可以通过将一个函数设置为等于它的相反值或类似的方式来处理切换。以下是我用于添加和删除数组元素的两个函数:

private onItemSelected(item)
{
    if (item)
    {
        this.itemsArray.push(item);
        console.log(this.itemsArray);
        return this.itemsArray;
    }
}

private onItemRemoved(item)
{
    if (item)
    {
        this.itemsArray.splice(item);
        console.log(this.itemsArray);
        return this.itemsArray;
    }
}
在我看来,我正在努力:

<md-checkbox (change)="onItemSelected('A') === onItemRemoved('A')">A</md-checkbox>
<md-checkbox (change)="onItemSelected('B') === onItemRemoved('B')">B</md-checkbox>
<md-checkbox (change)="onItemSelected('C') === onItemRemoved('C')">C</md-checkbox>

我发布了一个更简化的版本,没有添加任何额外的属性。请尝试下面的代码

private onItemSelected(item)
{
  const index: number = this.itemsArray.indexOf(item);
    if(index < 0){
         this.itemsArray.push(item);
         console.log(this.itemsArray);
         }
         else if(index != -1){
           this.itemsArray.splice(index,1);
           console.log(this.itemsArray);
         }      
   return this.itemsArray;
}
private已选中(项目)
{
常量索引:number=this.itemsArray.indexOf(item);
如果(指数<0){
this.itemsArray.push(item);
console.log(this.itemsArray);
}
否则如果(索引!=-1){
此.itemsArray.splice(索引,1);
console.log(this.itemsArray);
}      
返回此.itemsArray;
}

如果取消选中该复选框,会发生什么情况?该项应从数组中删除。是否可以尝试使用下面的代码?看起来很有希望。将尝试一下,谢谢。很接近,但是现在,如果我选择一个,我会得到一个数组。如果我取消选择,什么也不会发生。如果我选择第二个选项,我现在有一个2的数组。然后,如果我取消选择第二个项目,我会得到一个0的数组。我对此进行了一些编辑,甚至更接近。不过还是不太好。将在上面发布我的代码。@Muirik我更新了我的答案。请现在用更少的代码检查。成功了!非常感谢,@Niladri。
private onItemSelected(item)
{
  const index: number = this.itemsArray.indexOf(item);
    if(index < 0){
         this.itemsArray.push(item);
         console.log(this.itemsArray);
         }
         else if(index != -1){
           this.itemsArray.splice(index,1);
           console.log(this.itemsArray);
         }      
   return this.itemsArray;
}