前提:我尝试了几个答案(包括一个我问及不小心接受的答案),但没有一个适合我。
我有一个嵌套的ngFor内部和一个嵌套的绑定通过ngModel。
问题:当我在嵌套的ng中更新一个项目时,相应的项目也在另一个嵌套的ngFor中更新。 下面的示例代码,注释哪些有用,哪些无效。
模板
<div *ngFor="let outerObject of outerObjects; let oIndex = index; trackBy: trackByIndex">
{{outerObject.value}} <!-- this works -->
<div *ngFor="let innerObject of outerObject.innerObjects; let index = index; trackBy: trackByIndex">
<input [(ngModel)]="outerObject.innerObjects[index]"> <!-- when I change this any innerObjects[i] is updated -->
</div>
</div>
TS
outerObjects = [
{
value = 'x'
innerObjects: ['a', 'b', 'c']
},
{
value = 'y'
innerObjects: ['a', 'b', 'c']
}
];
trackByIndex(index: number, obj: any): any {
return index;
}
答案 0 :(得分:2)
您遇到语法错误:您必须写[(ngModel)]
而不是[(ngModel])
(注意方括号和普通括号的顺序)。
在纠正语法错误并在Angular 2.1.1中运行代码后,它似乎正在运行。数据绑定仅适用于相应的outerObject.innerObjects[index]