如果我在ngFor循环中创建选择输入,然后通过ngModel将值绑定到某个数组 - 这些选择不会从这个数组中获取它们的初始值(就像它只创建一个单向绑定一样)。以下是plunker中的简单示例: https://plnkr.co/edit/LX7XyrHcMGH8avZYA0pv?p=preview
@Component({
selector: 'my-app',
template: `
<div *ngFor="let select of test; let i = index" >
<select name="test" [(ngModel)]="vals[i]">
<option *ngFor="let item of select" [ngValue]="item">{{item.lol}}</option>
</select>
</div>
<div style="display: flex">
<div *ngFor="let val of vals; let last = last;">
{{val.lol}}{{last? '' : ','}}
</div>
</div>
`,
})
export class App {
test: any = [
[{ lol: '1' }, { lol: '2' }, { lol: '3' }],
[{ lol: '4' }, { lol: '5' }, { lol: '6' }],
[{ lol: '7' }, { lol: '8' }, { lol: '9' }],
];
vals: any[] = [{ lol: '1' }, { lol: '4' }, { lol: '7' }];
constructor() {}
}
答案 0 :(得分:1)
在此示例中使用[compareWith]解决了此问题
更新: 虽然它修复了这个例子,但在我的代码中,ngModel只更新了由ngFor生成的一个选择输入的值。对我来说,设置[ngModelOptions] =&#34; {standalone:true}&#34;已经解决了这个问题。希望它有所帮助...