无法在 angular 中的多个 select 中预置 select 值

Unable to preselect values in multiple select in angular

无法预选值,即使 [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);
})

主要问题是您试图在 方法 中设置 参考变量 ,这不会对正在迭代的数组产生影响。

如果如果您将设置引用变量的各个成员,情况就是如此,但这会给您留下 2 个不同的对象, 什么会不可避免地破坏 select 功能。

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

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 以获取展示我的答案的一组示例。