我的问题真的很简单:我有一个复选框列表,如下所示:
<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>
我想发送一组选定的选项,例如: [option1, option5, option8]如果选择了选项1、5和8。该数组是我想通过HTTP PUT请求发送的JSON的一部分。
[option1, option5, option8]
谢谢你的帮助!
感谢Gunter,我找到了解决方案!这是我的完整代码,如果它可以帮助任何人:
<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>
这是我正在使用的3个对象:
options = ['OptionA', 'OptionB', 'OptionC']; optionsMap = { OptionA: false, OptionB: false, OptionC: false, }; optionsChecked = [];
共有3种有用的方法:
1 。启动optionsMap:
optionsMap
initOptionsMap() { for (var x = 0; x<this.order.options.length; x++) { this.optionsMap[this.options[x]] = true; } }
2. 更新optionsMap:
updateCheckedOptions(option, event) { this.optionsMap[option] = event.target.checked; }
3. 转换optionsMap成optionsChecked并将其存储在options发送POST请求之前:
optionsChecked
options
updateOptions() { for(var x in this.optionsMap) { if(this.optionsMap[x]) { this.optionsChecked.push(x); } } this.options = this.optionsChecked; this.optionsChecked = []; }