【问题标题】:Angular2 patchValue While Traversing Through FormGroup Controls遍历FormGroup控件时的Angular2 patchValue
【发布时间】:2017-07-06 13:07:02
【问题描述】:

一旦像这样加载组件后,我会尝试将值修补到初始化的 FormGroup 中(其中 editForm 是 FormGroup,editInfo 是包含我想要修补到表单中的信息的 JSON):

Object.keys(this.editForm.controls).forEach(key => {
                if ((key.includes("date") || key.includes("Date")) && this.editInfo[key] != undefined) {
                    this.editForm.patchValue({
                        key: {
                            date: {
                                year: this.editInfo[key].getFullYear(),
                                month: this.editInfo[key].getMonth() + 1,
                                day: this.editInfo[key].getDate()
                            }
                        }
                    });
                }
            });

出于某种原因,这不是修补任何值。 if 语句在它应该运行的时候运行,并且所有 .getFullYear()、.getMonth() 和 .getDate() 值(所有这些键值都是 Date 对象)都已定义且正确。当我更换

this.editForm.patchValue({
                            key: {
                                date: {

this.editForm.patchValue({
                            'specificKey': {
                                date: {

该密钥已正确修补。有什么理由不指定密钥会导致它不起作用? This 是我用于日期选择器的模块(我试图在上面修补的值),如果有任何用处的话。

【问题讨论】:

标签: javascript forms angular typescript


【解决方案1】:

通过 Ankit Saroch 提供的此链接 (Is there a way to use variable keys in a JavaScript object literal?) 找到了我的答案。解决方案是在修补值时将 [] 放在键周围,如下所示:

this.editForm.patchValue({
                            [key]: {
                                date: {

使用括号,键被解释为computed property names

【讨论】:

    猜你喜欢
    • 2017-02-09
    • 1970-01-01
    • 2017-05-18
    • 2017-10-08
    • 2017-11-04
    • 1970-01-01
    • 2016-11-22
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多