отправка только определенных входных данных из FormGroup в angular

#angular #typescript

#angular #typescript

Вопрос:

Я хочу отправлять только определенные входные данные из моей FormGroup. Вот мой код

 createForm() {
    this.myForm = this.formBuilder.group({
      'firstName': [null, Validators.required],
      'lastName': [null, Validators.required],
      'zipCode': [null, Validators.required],
      'CompanyName': [null, Validators.required],
      'Phone': [null, Validators.required],
      'companyId': [null, Validators.required],`enter code here`
      'checkbox1': [true],
      'checkbox2': [false]
    });

  }
 

У него есть два флажка. Ввод принимается в зависимости от того, установлен флажок или нет. Поэтому, если я сниму флажок checkbox2, мне не нужно отправлять имя компании, телефон, идентификатор компании и т. Д. Как я могу это сделать в angular?

Комментарии:

1. если вы «отключите» FormControl, form.value не будет включать этот элемент. Кстати, в любом случае вы можете создать временный объект перед отправкой, например: const data={firstName:this.myForm.firstName} содержать только свойство ‘FirstName’

Ответ №1:

Вам необходимо проверить значения формы при отправке и создать пользовательский объект post.

 save(event: Event) {
  Object.keys(this.myForm.controls).forEach(field => {
      const control = this.myForm.get(field);
      control.markAsTouched({ onlySelf: true });
  });
  if (this.myForm.valid) {
     try {
         const formValues = this.myForm.value;
         console.log(formValues);
         //You can check the condition here and pass the values as you need eg:
         cost postParams = {
            field1:value1,
            field2:value2,
         }
     }catch (e) {
        console.log(e);
     }
  }
}