Я работаю над мобильным приложением 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 причина этой проблемы?