遍历FormGroup控件时的Angular2 patchValue

时间:2017-07-06 13:07:02

标签: javascript forms angular typescript

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

echo "<a class=\"fa fa-ban fa-2x cancelClass\" onClick=\"cancelClass('$id', '$formattedDate', '$time')\"></a><p class=\"text-center\">".$formattedDate." @ $time</p>";

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

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()
                            }
                        }
                    });
                }
            });

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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