2017-10-08 70 views
0

我有一个错误,我不明白ReactiveForms。FormGroup和传播运算符

来自roomsGroup的output var返回一个像我希望的对象数组。

然后我使用传播运算符将所有对象传递给roomingGroup中的表单组。但只有第一个对象被设置。

我不知道我必须做些什么才能使它工作。

有什么想法?

export function roomingGroup (fb: any) { 
    return fb.group(
     ...roomsGroup(fb) 
    ); 
} 

function roomsGroup (fb) { 
    let output = []; 

    for (let i = 1; i < 4; i++) { 
     let nameOfProperty = 'R' + i; 

     output.push({ 
      [nameOfProperty]: fb.group({ 
       quantity: fb.group({ 
        adult: [''], 
        child: [''] 
       }) 
      }) 
     }) 
    } 

    return output; 
} 
+0

返回对象而不是数组? – yurzui

+0

不,只返回第一个对象,不返回其他:{R1:{...}}而不是{R1:{...},R2:{...},...} – Swarovski

+0

不,我已经尝试一下。我想我错过了一些简单的事情。 – Swarovski

回答

0

我想要输出对象。所以我必须与对象合作:

let output = {}; 

for (let i = 0; i < count; i++) { 
    let nameOfProperty = 'R' + (i + 1); 

    output = (<any>Object).assign(output, { 
     [nameOfProperty]: fb.group({ 
      quantity: fb.group({ 
       adult: [''], 
       child: [''] 
      }) 
    })}) 
} 

return output; 

这是我的解决方案。