即使[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);
})
答案 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。