【发布时间】:2018-04-23 11:54:43
【问题描述】:
我有 ngModel,在 ngFor 循环内:
<div *ngFor="let comment of comments">
<div *ngFor="let answer of toArray(comment.answers); let j = index; trackBy: trackByIndex;">
<textarea id="editAnswer[j]" name="editAnswer[j]" [(ngModel)]="answer.text">
{{ answer.text }}
</div>
</div>
在我的组件中,我有两个用于索引迭代和将对象转换为数组的函数:
trackByIndex(index: number, obj: any): any {
return index;
}
toArray(answers: object) {
return Object.keys(answers).map(key => ({
key,
...answers[key]
}))
}
但是当我更改 textarea 中绑定的文本时,ngModel 不会改变。
Stackblitz 示例: https://stackblitz.com/edit/angular-z6xatv
【问题讨论】:
-
试试这个 HTML
-
您正在通过
index进行跟踪,这就是ngFor不重新渲染text的原因,您可以尝试更改为return index + obj.text; -
@PankajParkar 不起作用。
-
你的方法调用中的
comment.answers是什么? -
@PardeepJain 这是我在 ngFor 循环中得到的对象,我更新了有问题的代码。
标签: angular typescript ngmodel