>source

먼저 혼란스러운 질문 언어에 대해 죄송합니다. 최대한 설명해 드리겠습니다. 이것은 이전 질문에 추가되었습니다.스택 오버플로.

선택한 체크 박스의 값을 추가/표시하고 싶었습니다. 나는 그것을 부분적으로 달성 할 수 있지만 현재 문제는 하나의 확인란을 선택하면 첫 번째 값을 표시하고 두 개의 확인란에서 두 번째 값을 1st n 2 대신 2 번 표시하고 3 개의 확인란에서 3 번째 값을 1 대신 3 번 표시합니다. 2 일, 3 일.

여기에서 볼 수 있습니다.https://angular-ivy-d2gbad.stackblitz.io/양식을 보려면 각 행을 클릭하십시오.

암호:https://stackblitz.com/edit/angular-ivy-d2gbad?file=src%2Fapp%2Fapp.component.html


  • 답변 # 1

    업데이트하십시오 addSubData 아래와 같은 기능-

    addSubData(user: any) {
        let i: any;
        i = document.querySelectorAll('input[type="checkbox"]:checked');
        for(var checked of i) {
          const newUser = Object.assign({}, user)
          newUser.dl = checked.value;
          newUser.sub_impact = "Applicable";
          newUser.co_score = "Added";
          this.userObj.assigned_to.push(newUser);
        }  
      }
    
    

    문제는 동일한 사용자 개체에 값을 할당하는 것입니다. 그래서 그것은 배열의 값도 업데이트했습니다. 다음을 사용하여 사용자 개체를 복제해야합니다. Object.assign .

    또한 값을 가져 오기 위해 인덱스로 배열을 횡단했지만 인덱스는 k-1 for 루프에서 상수이므로 항상 for 루프에서 동일한 값을 반환합니다. 코드를 업데이트 했으므로 확인란 자체에서 선택합니다.

    이 외에도 사소한 문제가 있는데이 문제를 해결하면 알게 될 것 같습니다.

관련 자료

  • 이전 dictionary - 파이썬 - 사전에서 가장 낮은 값 찾기
  • 다음 java - Android는 갤러리에 FileOutputStream 저장