Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

345
Vistas
Angular 2: obtener valores de varias casillas marcadas

Mi problema es realmente simple: tengo una lista de casillas de verificación como esta:

 <div class="form-group"> <label for="options">Options :</label> <label *ngFor="#option of options" class="form-control"> <input type="checkbox" name="options" value="option" /> {{option}} </label> </div>

Y me gustaría enviar una matriz de las opciones seleccionadas, algo como: [option1, option5, option8] si se seleccionan las opciones 1, 5 y 8. Esta matriz es parte de un JSON que me gustaría enviar a través de una solicitud HTTP PUT.

¡Gracias por tu ayuda!

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Aquí hay una forma simple de usar ngModel (final Angular 2)

 <!-- my.component.html --> <div class="form-group"> <label for="options">Options:</label> <div *ngFor="let option of options"> <label> <input type="checkbox" name="options" value="{{option.value}}" [(ngModel)]="option.checked"/> {{option.name}} </label> </div> </div>

 // my.component.ts @Component({ moduleId:module.id, templateUrl:'my.component.html'}) export class MyComponent { options = [ {name:'OptionA', value:'1', checked:true}, {name:'OptionB', value:'2', checked:false}, {name:'OptionC', value:'3', checked:true} ] get selectedOptions() { // right now: ['1','3'] return this.options .filter(opt => opt.checked) .map(opt => opt.value) } }
over 4 years ago · Santiago Trujillo Denunciar

0

¡He encontrado una solución gracias a Gunter! Aquí está mi código completo si pudiera ayudar a alguien:

 <div class="form-group"> <label for="options">Options :</label> <div *ngFor="#option of options; #i = index"> <label> <input type="checkbox" name="options" value="{{option}}" [checked]="options.indexOf(option) >= 0" (change)="updateCheckedOptions(option, $event)"/> {{option}} </label> </div> </div>

Aquí están los 3 objetos que estoy usando:

 options = ['OptionA', 'OptionB', 'OptionC']; optionsMap = { OptionA: false, OptionB: false, OptionC: false, }; optionsChecked = [];

Y hay 3 métodos útiles:

1 . Para iniciar optionsMap :

 initOptionsMap() { for (var x = 0; x<this.order.options.length; x++) { this.optionsMap[this.options[x]] = true; } }

2. para actualizar el mapa de optionsMap :

 updateCheckedOptions(option, event) { this.optionsMap[option] = event.target.checked; }

3. para convertir optionsMap en optionsChecked y almacenarlo en options antes de enviar la solicitud POST:

 updateOptions() { for(var x in this.optionsMap) { if(this.optionsMap[x]) { this.optionsChecked.push(x); } } this.options = this.optionsChecked; this.optionsChecked = []; }
over 4 years ago · Santiago Trujillo Denunciar

0

crear una lista como: -

 this.xyzlist = [ { id: 1, value: 'option1' }, { id: 2, value: 'option2' } ];

html:-

 <div class="checkbox" *ngFor="let list of xyzlist"> <label> <input formControlName="interestSectors" type="checkbox" value="{{list.id}}" (change)="onCheckboxChange(list,$event)">{{list.value}}</label> </div>

luego en su componente ts :-

 onCheckboxChange(option, event) { if(event.target.checked) { this.checkedList.push(option.id); } else { for(var i=0 ; i < this.xyzlist.length; i++) { if(this.checkedList[i] == option.id) { this.checkedList.splice(i,1); } } } console.log(this.checkedList); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda