如果用户可用,这是我更新表单的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"
}
答案 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属性是获取的最佳方式 该群体的价值。