ioni c angular странная проблема - пользовательский валидатор форм не вызывается android - PullRequest
0 голосов
/ 11 марта 2020

Я работаю над мобильным приложением ioni c 4 angular. Я сталкиваюсь с одной странной проблемой, когда проверка пользовательской формы не вызывается на устройстве android, а вызывается и работает в соответствии с ожиданиями.

После подробного изучения кажется, что если тип ввода - текст, то он вызывает проблему и работает, если тип ввода - пароль.

Подтверждено ниже пунктов

  • Нет ошибки на уровне консоли
  • Тот же код работает при запуске на ios устройство / запуск с командой ioni c.

.ts код файла

   this.loginForm = new FormGroup({
      username: new FormControl('', Validators.required),
      password: new FormControl('', Validators.required)
    },this.loginFormValidator());

. html код файла

<fd-form-input-validation-message [errorType]="'error'" [errorVisible]="loginForm.errors?.username && loginForm.dirty ? 'true': 'false'" [errorMessage]="'Please enter username'">
                <input
                  #username
                  formControlName="username"
                  fd-form-control
                  type="text"
                  id="form-input-1"
                  name="username"
                  id="username"
                  autocapitalize="none"
                  autocomplete="off"
                  autocorrect="off"
                  required
                  type="text"
                  (keyup.enter)="onClickNext(password)"
                  [state]="loginForm.errors?.username && loginForm.dirty?'invalid':''"
                  placeholder="{{ 'LOGIN.USER_NAME_PLACEHOLDER' | translate }}"
                />
              </fd-form-input-validation-message>

Код функции проверки:

loginFormValidator(): ValidatorFn {
    debugger;
    console.log("validation function called");
    return (control: FormGroup): ValidationErrors | null => {
      const errors: ValidationErrors = {};
      if ((control.get('username').value.length>=1 && control.get('password').value.length>=1)) {
          this.footerButtonConfig.disableStatus=false;

      }
      else{ 
          this.footerButtonConfig.disableStatus=true;
          if(control.get('username').value.length==0 && control.get('username').dirty){
          errors.username = {
            message: 'Please enter username'
          };
        }
        if(control.get('password').value.length==0 && control.get('password').dirty){
          errors.password = {
            message: 'Please enter password'
          };
        }
      }
      return Object.keys(errors).length ? errors : null;
    };
  }

Пакет. json -

    "@angular/core": "~8.1.2",
    "@angular/forms": "~8.1.2",
    "@angular/http": "^7.2.15",

Как упоминалось выше, если type = "password", то функция проверки вызывается на всех 3 платформах (веб, ios, android) Какова может быть root причина этой проблемы?

...