Угловые условные проверки - PullRequest
       17

Угловые условные проверки

0 голосов
/ 27 сентября 2019

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

<mat-form-field appearance="fill">
  <mat-label>CountryCode</mat-label>
  <input formControlName="CountryCode" matInput (click)='updateFormTextValue("alphanumericNext", "CountryCode")'>
  </mat-error>
</mat-form-field>

Я хочу добавить проверку для этого поля таким образом, чтобы, если страна была Канада,Я хочу сделать Validators.required и Validators.maxLength (30), и если страна отличается от Канады, мне просто нужно проверить максимальную длину.Как я могу это сделать?

Мой код в классе обслуживания выглядит следующим образом

CountryCode: new FormControl('', [Validators.required, Validators.maxLength(30)]),

Я могу использовать валидаторы, предоставленные angular, как мой код выше, но не знаю, как поставитьпроверка согласно условиям.Я видел несколько примеров по StackOverflow, но не понял, как это сделать.

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

Кроме того, необходимо показать сообщение о том, что если максимальная длина превышает, то должно быть отображено сообщение «Превышена максимальная длина», и если поле пустое и если страна является Канадой, то поле «сообщение» является обязательнымпоказано "

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Основываясь на средствах проверки обновления выбора страны, давайте предположим, что вы выбрали страну как "Индия" selectedCountry="India"

  if(selectedCountry===India'){
    this.myForm.controls.get('CountryCode').setValidators([Validators.required, 
                                              Validators.maxLength(5)]);
}else{
 this.myForm.controls.get('CountryCode').setValidators([Validators.required, 
                                              Validators.maxLength(4)]);
}

, которую вы можете заменить maxLength(4) на длину символа вашей страны.

0 голосов
/ 27 сентября 2019

Вам необходимо создать пользовательский валидатор .

Примерно так:

CountryCode: new FormControl('', [CountryCodeValidator('Canada')]),

function CountryCodeValidator(countryName: string): ValidatorFn {
  return (control: AbstractControl): { [key: string]: boolean } | null => {
    if (countryName == "Canada") {
      if (control.value.length >= 30) {
        return null
      } else {
        return { 'CountryCode': true };
      }
    } else {
      return null
    }
  };
}

Подробнее об этом здесь

...