Установите все флажки в дереве уровня div в угловых 6 - PullRequest
0 голосов
/ 03 июля 2019

У меня есть список массивов с родительским и дочерним уровнями (родительский уровень - дочерний уровень - дочерний уровень 1).

Когда я выбираю любой дочерний уровень, я могу установить флажок выбранного родительского уровня. Когда я снимаю флажок со всех родительских уровней дочернего уровня, флажок не снимается.

Вот код, используемый для поиска флажка на html-странице

<div class="table rts-table-parentChild" *ngFor="let  userRole of userRoleActions; let i = index">
  <div class="table-cell">
    <input type="checkbox" [ngModelOptions]="{standalone: true}" class="setup-checkbox" id="ChekCreate{{userRole.actionName}}" (ngModel)]="userRole.isCreateChecked" (change)="selectParentRole(i,'create')">
  </div>
  <div style="display:table-row-group;" *ngFor="let item of userRole.userRoleSubActions; let j = index">
    <div class="table-cell">
      <input type="checkbox" [ngModelOptions]="{standalone: true}" class="setup-checkbox" [(ngModel)]="item.isCreateChecked" (change)="isCreateChecked(i,'create')">
    </div>
    <div style="clear:both !important;" class="table-row" *ngFor="let subitem of item.userRoleSubActions;let k=index">
      <div class="table-cell">
        <input type="checkbox" [ngModelOptions]="{standalone: true}" class="setup-checkbox" [(ngModel)]="subitem.isCreateChecked" (change)="isCreateChecked(i,'create')">
      </div>
    </div>
  </div>
</div>

Выше приведен код для генерации html-файла с родительскими и дочерними отношениями. ниже приведен код для выбора всех функций из родительского и дочернего флажка

selectParentRole(currentIndex, roleType) {
  for (var i = 0; i < this.userRoleActions[currentIndex].userRoleSubActions.length; i++) {
    if (roleType === 'create') {
      this.userRoleActions[currentIndex].userRoleSubActions[i].isCreateChecked = this.userRoleActions[currentIndex].isCreateChecked;
    }

    for (var j = 0; j < this.userRoleActions[currentIndex].userRoleSubActions[i].userRoleSubActions.length; j++) {
      if (roleType === 'create') {
        this.userRoleActions[currentIndex].userRoleSubActions[i].userRoleSubActions[j].isCreateChecked = this.userRoleActions[currentIndex].isCreateChecked;
      }
    }
  }
}


isCreateChecked(index, roleType) {
  for (var j = 0; j < this.userRoleActions[index].userRoleSubActions.length; j++) {
    if (this.userRoleActions[index].userRoleSubActions[j].isCreateChecked && roleType === "create") {
      this.userRoleActions[index].isCreateChecked = true; // console.log("isCreateChecked");
      break;
    }

    for (var k = 0; k this.userRoleActions[index].userRoleSubActions[j].userRoleSubActions.length; k++) {
      if (this.userRoleActions[index].userRoleSubActions[j].userRoleSubActions[k].isCreateChecked && roleType === "create") {
        this.userRoleActions[index].isCreateChecked = true;
        this.userRoleActions[index].userRoleSubActions[j].isCreateChecked = true;
        break;
      }
    }
  }
}

Я хочу снять родительский флажок при выборе дочернего флажка

...