无法预先选择多个角度选择值

时间:2018-09-20 18:56:38

标签: angular html5 select angular-ngmodel

即使[selectedModels]列表中填充有[options]列表中的[same objects],也无法预先选择值。

 <select multiple [(ngModel)]="selectedModels" class="col-md-7 form-control">
      <option [ngValue]="obj" [selected]="checkIfSelected(obj)" *ngFor="let obj of options">{{obj.name}}</option>
 </select>

也尝试使用[selected],但无法成功。 “ checkIfSelected”方法返回正确的布尔值。

正在寻求快速帮助。谢谢!

从服务调用中加载selectedModels列表后,从选项列表中更改对象

this.selectedModels.forEach(sm => {
      sm = this.options.find(o => o.id == sm.id);
})

1 个答案:

答案 0 :(得分:1)

主要问题是您试图在forEach方法的内部设置引用变量 ,这在数组中不会起作用被迭代。

如果您要设置参考变量的个成员,则会出现 的情况,但这将给您留下2个不同的对象,这将不可避免地破坏选择功能

解决问题的最简单方法(跟踪选定的对象+加载选项时更新选定的对象)将是采用不变的方法,方法是:

this.selectedModels.forEach(sm => {
      sm = this.options.find(o => o.id == sm.id);
})

收件人

const nextSelected = this.options
  .filter(option => this.selectedModels.some(selected => selected.id === option.id)
this.selectedModels = nextSelected;

有关展示我的答案的一组示例,请参见this stackblitz