如何在[嵌套] ngFor(Angular rc2)中设置ngModel?

时间:2016-10-29 19:45:44

标签: angular angular2-template

前提:我尝试了几个答案(包括一个我问及不小心接受的答案),但没有一个适合我。

我有一个嵌套的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;
}

1 个答案:

答案 0 :(得分:2)

您遇到语法错误:您必须写[(ngModel)]而不是[(ngModel])(注意方括号和普通括号的顺序)。

在纠正语法错误并在Angular 2.1.1中运行代码后,它似乎正在运行。数据绑定仅适用于相应的outerObject.innerObjects[index]