Как уменьшить или увеличить автопроверку в флажке на основе количества, которое вводится в поле формы - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть требование, когда при вводе счетчика в поле формы ввода на основе номера счетчика флажок в таблице должен автоматически проверяться, я могу это сделать, но я не могу его обновить, если я уменьшите количество в поле, в таблице флажок снят, основываясь на количестве, но если я увеличу количество в это время, автоматическая проверка для флажка не применяется.


  addDamaged(id,index) {
    let damageCheckBoxes = this.damageCheckBoxes.toArray();
     this.materialList  = this.dataSource.data;
     if(this.materialList[index]['id'] ===id && this.damagelist.length < this.secondFormGroup.get('count').value 
        && this.secondFormGroup.controls['comment'].value && damageCheckBoxes[index].checked){
        this.materialList[index]['isDamage'] = true;        
        if(this.materialList[index]['isDamage']){
          this.materialList[index]['damage']= { comment :this.secondFormGroup.get('comment').value}; // add damge to meterial
          this.damagelist.push(this.materialList[index]); // update damage list with items
        }
        damageCheckBoxes[index].checked = true;
     } else{
        damageCheckBoxes[index].checked = false;
        this.materialList[index]['isDamage'] = false;
          delete this.materialList[index]['damage'];
          for (let dIndex in this.damagelist){
            if(this.damagelist[dIndex].id === this.materialList[index]['id']){
              this.damagelist.splice(dIndex,1);
            }
          }
     }
     this.dataSource.data = this.materialList ;
  }


  checkDamage(){
    let damageCheckBoxes = this.damageCheckBoxes.toArray();
    this.materialList = this.dataSource.data;
    let count = this.secondFormGroup.get('count').value;
    for(let i = 0;i<count;i++){
      if(this.secondFormGroup.get('comment').value && this.damagelist.length<this.secondFormGroup.get('count').value ){
        this.materialList[i].damage = { comment :this.secondFormGroup.get('comment').value};
        this.damagelist.push(this.materialList[i]);
    //  console.log( this.materialList[i].damage);

      }
     else{
      damageCheckBoxes[i].checked = false;
      this.materialList.forEach(ele=>{
        ele.damage = null;
      })
      this.damagelist = [];
      if(this.secondFormGroup.get('comment').value){
        this.materialList[i].damage = { comment :this.secondFormGroup.get('comment').value};
        damageCheckBoxes[i].checked=true;
        this.damagelist.push(this.materialList[i]);
        console.log( this.damagelist);
      }

   /*   for (let dIndex in this.damagelist){
        if(this.damagelist[dIndex].id === this.materialList[i]['id']){
          this.damagelist.splice(dIndex,i);
        }
      }
    */
    }
    }


   }

В коде метод addDamage используется для проверки и снятия флажка вручную на основе количества. Метод checkdamage используется для автоматической проверки на основе количества. Если я уменьшаю количество, оно снимает отметку со своего штрафа, но если я увеличиваю количество, оно устанавливает флажок на основе количества. Может ли кто-нибудь помочь решить эту проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...