Значение формы angular2 при установке и отключении данных без привязки

Вот мой совет обновить форму, если пользователь доступен.

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 ответ

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() вместо. Смотрите также документ

Если вы хотите включить все значения независимо от статуса отключенного, используйте этот метод. В противном случае свойство value - лучший способ получить значение группы.

Другие вопросы по тегам