angular2上的angular2表单值设置和禁用不绑定数据

时间:2017-03-14 19:39:59

标签: angular reactive-forms

如果用户可用,这是我更新表单的oode。

if (this.user.landmark) this.uploadForm.controls['landmark'].setValue(this.user.landmark || '');
    //if (this.user.landmark) this.uploadForm.get('landmark').disable({ onlySelf: true });

如果我取消注释禁用,然后点击提交,则输出json中不会生成地标字段。

例如

不禁用

console.log(this.uploadForm.value)给出

{
username:"dummyUser",
landmark:"Nearby EB Office"
}

禁用

console.log(this.uploadForm.value)给出

{
username:"dummyUser"
}

1 个答案:

答案 0 :(得分:3)

FormGroup.value不包含已停用的控件

 
 it('should ignore disabled controls when serializing value in a group', () => {
    const c = new FormControl('one');
    const c2 = new FormControl('two');
    const g = new FormGroup({one: c, two: c2});
    expect(g.value).toEqual({one: 'one', two: 'two'});

    c.disable();
    expect(g.value).toEqual({two: 'two'});

    c.enable();
    expect(g.value).toEqual({one: 'one', two: 'two'});
  });

请改用this.uploadForm.getRawValue()。另请参阅doc

  

如果您想要包括所有值而不考虑禁用状态,请使用   这种方法。否则,value属性是获取的最佳方式   该群体的价值。