Angular 无法在多个“选择角度”中预选值

Angular 无法在多个“选择角度”中预选值,angular,html,select,angular-ngmodel,Angular,Html,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

即使[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>

主要问题是,您试图在
forEach
方法内部设置引用变量,这对正在迭代的数组没有影响

如果要设置引用变量的单个成员,则会出现这种情况,但这会留下两个不同的对象,这将不可避免地破坏选择功能

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

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


有关我的答案的示例,请参见。

您可以说明如何填充
selectModels
属性吗?更新了我的问题@Jota.toledo稍后我会添加答案,请给我几分钟时间。请参考我的答案
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;