【发布时间】:2018-03-09 14:23:04
【问题描述】:
最初创建为 Angular 2 模板表单,为了添加自动保存功能,我们正在转换为响应式表单。
页面有一系列文本输入,通过 .NET Web API 持久化到后端数据库。 Angular 服务调用 web api。
我创建了一个代表页面数据控件的 FormGroup:
const cells = fb.group({
id: [''],
question: [''],
actual: [''],
budget: [''],
average: [''],
top20: ['']
});
this.form = fb.group({
reviewer: '',
position: '',
officeName: '',
comments1: '',
comments2: '',
comments3: '',
rows: fb.array([cells, cells])
});
reviewer、position、officeName 和 cmets 字段按预期工作,但我无法理解如何表示一个数据集,该数据集在 FormGroup 中成功地作为行和单元格(网格)的双数组返回.
在模板表单版本中,网格数据由 observable 接收,如下所示:
this.rows = summaryReportQuestion.map(summaryReportQuestionObj => {
return {
cells: [
summaryReportQuestionObj.questionID,
summaryReportQuestionObj.question,
(summaryReportQuestionObj.columnSign == '$' ? (summaryReportQuestionObj.columnSign + ' ' + summaryReportQuestionObj.target) : summaryReportQuestionObj.target + ' ' + summaryReportQuestionObj.columnSign),
(summaryReportQuestionObj.budget == null ? summaryReportQuestionObj.budget : (summaryReportQuestionObj.columnSign == '$' ? summaryReportQuestionObj.columnSign + ' ' + this.utilityService.formatNumberWithCommas(Math.floor(summaryReportQuestionObj.budget), false) : summaryReportQuestionObj.budget + ' ' + summaryReportQuestionObj.columnSign)),
(summaryReportQuestionObj.average == null ? summaryReportQuestionObj.average : (summaryReportQuestionObj.columnSign == '$' ? summaryReportQuestionObj.columnSign + ' ' + this.utilityService.formatNumberWithCommas(Math.floor(summaryReportQuestionObj.average), false) : summaryReportQuestionObj.average + ' ' + summaryReportQuestionObj.columnSign)),
(summaryReportQuestionObj.top20Percent == null ? summaryReportQuestionObj.top20Percent : (summaryReportQuestionObj.columnSign == '$' ? summaryReportQuestionObj.columnSign + ' ' + this.utilityService.formatNumberWithCommas(Math.floor(summaryReportQuestionObj.top20Percent), false) : summaryReportQuestionObj.top20Percent + ' ' + summaryReportQuestionObj.columnSign))
]
};
});
在 Reactive Form 版本中,我刚刚将 this.rows 的值分配给了我的 FormGroup 项:
this.molForm.patchValue({rows: this.rows});
但它并没有像我预期的那样工作。
在表单组中使用双精度数组的最佳方式是什么?
【问题讨论】:
标签: arrays angular grid angular-reactive-forms