i have this related permission relatedPermissions(permissionToCheck: string): string[] { let permissions = []; switch (permissionToCheck) { case 'ManagerPermissions.Agent.CreateAgent': case 'ManagerPermissions.Agent.UpdateAgent': permissions = [ 'ManagerPermissions.Agent.ReadAgent', ]; break; default: // No permissions related to other cases break; } return permissions; } and this function to handle checkRoleDependenciesON(permission: string, permissionObject) { let relatedpermissionslist = this.permissionsService.relatedPermissions(permission).filter(el => permissionObject['value'] != el); this.rolePermissions = [...this.rolePermissions]; let relatePermission: any[] = []; this.permissions.forEach(element => { relatePermission = element.permissions.filter(el => { return relatedpermissionslist.indexOf(el['value']) > -1 }); if (relatePermission) { relatePermission.forEach(el => { if (permissionObject['isChecked']) { if (this.rolePermissions.findIndex(value => value == el.value) < 0) { this.rolePermissions.push(el.value); } if (this.isEditMode) { if (this.role.permissions.findIndex(value => value == el.value) < 0) { this.role.permissions.push(el.value); } } el.isRelatedSelected = true; el.isChecked = true; } else { el.isRelatedSelected = false; el.isChecked = false; if (this.rolePermissions.findIndex(value => value == el.value) >= 0) { let deleted = this.rolePermissions.splice(this.rolePermissions.indexOf(el.value), 1); } if (this.isEditMode) { if (this.role.permissions.findIndex(value => value == el.value) >= 0) { let deleteed = this.role.permissions.splice(this.role.permissions.indexOf(el.value), 1); } } } }); } }); // this.refershCheckedPermissions(); } if for example selected create driver from ui this selected Driver Listing Page this fine but not fine if i also selected uppdate driver then i unselected it this make Driver Listing Page un selected i want if any create driver r update driver selected selected and i want dynamic solution because i have many case but just removed For short Continue reading...