【问题标题】:Bind multi select option in agnular2在 agnular2 中绑定多选选项
【发布时间】:2017-01-27 07:36:36
【问题描述】:

这里有人可以告诉我如何绑定多选吗?我从数据库(REST)中获取数据,使用这部分代码(以编辑形式)我foreach类别并添加选择的属性:

for (let i = 0; i < this.group.categories.length; i++) {
                    for (let j = 0; j < this.categories.length; j++) {
                        if (this.group.categories[i].id == this.categories[j].id) {
                            this.categories[j].selected = true;
                        }
                    }
                }

并且在模板中有这个:

<label class="form-group">
                            Select categories:
                            <select [(ngModel)]="group.categories" name="categories" class="form-control" required multiple>
                                <option *ngFor="let c of categories" value={{c.id}} [selected]="c.selected">
                                    {{c.title}}
                                </option>
                            </select>
                        </label>

如果我检查元素,我看到 angular 将它们的值设置为选中,但没有向用户显示选择了哪个选择框项。 我究竟做错了什么?我没有找到任何解决方案,所以问你。我希望你能帮助我。

【问题讨论】:

  • selected 属性具有字符串类型,但在您的代码中将其设置为布尔值。

标签: rest angular


【解决方案1】:

希望有人能提供帮助。

需要从具有特定对象的类别创建数组:

let selected_categories = [].slice.call(this.group.categories).map(a => a.id);

然后将其添加到组对象:

this.group.categories = selected_categories;

然后在模板中绑定:

<select multiple name="categories" [(ngModel)]="group.categories" class="form-control" >
                            <option *ngFor="let c of categories" [value]="c.id">
                                {{c.title}}
                            </option>
                        </select>

那就是:)享受吧:)

【讨论】:

  • 如果您将[value] 设置为完整对象:[value]="c",则无需执行任何操作来绑定它。会自动绑定。
  • 好吧,你能告诉我你从服务器获取的数据是怎样的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
相关资源
最近更新 更多