【发布时间】:2017-04-12 15:15:54
【问题描述】:
我有一个表单来创建一个“问题”,它是一个包含答案字符串数组的对象。我的问题是我找不到将这些答案绑定到问题模型的方法
一个简单的实现是:
import { Component } from '@angular/core';
class Question {
question: string;
answers: Array<string>;
}
@Component({
selector: 'app',
template: `
<input type="text" [(ngModel)]="question.question">
<input type="text" *ngFor="let answer of question.answers" [(ngModel)]="answer">
`
})
export class AppComponent {
question: Question = new Question;
question.answers = new Array(4);
constructor(){};
}
问题在第二个ngModel。
使用此解决方案,我得到了错误:
zone.js:388 Unhandled Promise rejection: Cannot assign to a reference or variable! ; Zone: <root> ; Task: Promise.then ; Value: Error: Cannot assign to a reference or variable!
我猜我们无法将 ngFor 生成的值绑定到模型。
我也尝试了这些选项:
-
[(ngModel)]="question.answers[index]"-> 有了这个,我在ngFor上添加了let index=index;,并在输入中添加了相应的名称。这里有我在下一段中描述的错误 -
[(ngModel)]="question.answers[]-> 尝试使用纯 HTML 做同样的事情。这根本不起作用
这些都没有像我预期的那样工作:当您更改输入值时,它似乎会重新加载 ngFor 循环。当我扩展我的解决方案以允许用户附加或删除答案时,添加答案将删除第一个答案的内容。
【问题讨论】:
标签: angular typescript angular-ngmodel angular2-forms