Angular 6 Обязательное только одно поле из множества полей Reactive Form - PullRequest
0 голосов
/ 05 декабря 2018

Я новичок в угловой.У меня есть один сценарий, где мне нужно только одно поле, обязательное для заполнения из 5 полей в форме. Это означает, что если пользователь заполняет хотя бы одно поле, форма становится действительной.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018
    <form [formGroup]="formdata">
<div class="form-group">
    <label for="fieldlabel1">fieldLabel1</label>
    <input type="text" id="fieldlabel1" formControlName="fieldName1" class="form-control"><br>
    <label for="fieldlabel2">fieldLabel2</label>
    <input type="text" id="fieldlabel2" formControlName="fieldName2" class="form-control">
</div>
 </form>

<div class="row">
      <div class="col-sm-12">
        <button type="submit" value="submit" (click)="somefunctioncall()" [disabled]="formdata.invalid">
          Submit
        </button>
      </div>
</div>



import { FormGroup, FormControl, Validators } from '@angular/forms';
import { OnInit } from '@angular/core';

export class test {

formdata: FormGroup;

 ngOnInit() {


  this.formdata = new FormGroup({

      fieldName1: new FormControl("", Validators.compose([
        Validators.required
      ])),
      fieldName2: new FormControl("", Validators.compose([
        // remove required validation for one you dont need.
      ]))
    })   
 }
}
0 голосов
/ 05 декабря 2018

Поскольку вам нужно проверять действительность всей формы только в том случае, если одно из полей не пустое, вы можете вручную установить срок действия, как показано ниже:

if(!this.valid){
    this.form.setErrors({ 'invalid': true});
}else{
    this.form.setErrors(null);
}

Где this.valid - это ваше условие на основена котором вы можете установить срок действия

Вы можете проверить пример: https://angular -exmphk.stackblitz.io

Вы также можете проверить ответ: Проверка FormGroup в «исключительном» или «», которая выполняет проверку формы на основе некоторого условия

Надеюсь, это поможет

0 голосов
/ 05 декабря 2018

Проверьте этот пример проверки номера телефона

import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { NumberValidator } from '../validators/form-validators';


constructor(
    private fb: FormBuilder){}

FormName: FormGroup = this.fb.group({
    phoneNumber: ['', NumberValidator]    
  });

в файле подтверждения формы

import { AbstractControl, ValidatorFn } from '@angular/forms';

export const NumberValidator = (): ValidatorFn => {
  return (control: AbstractControl): { [key: string]: any } | null => {
    const mobileRegex = /^[()-\d\s]*$/g;
    const result = mobileRegex.test(control.value);
    return result ? null : { mobileInvalid: { value: control.value } };
  };
};

дайте мне знать, если у вас есть какие-либо сомнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...