Я работал над формами проверки с помощью ionic / angular и выяснил, как проверить, является ли поле пустым, и уведомить пользователя о том, что оно должно быть заполнено. Однако я хочу также уведомить пользователя, когда его ввод не соответствует моему шаблону проверки или моему регулярному выражению. Кроме этого, я также был бы признателен, если бы кто-то мог объяснить мне, как отключить кнопку отправки, если все валидаторы не подходят. Пока все, что у меня есть, - это проверка каждого поля на наличие ошибок или касание.
мой файл TS:
constructor(public navCtrl: NavController, public formBuilder: FormBuilder) {
this.db = firebase.firestore();
this.loadData();
this.formGroup = formBuilder.group({
nome:['', Validators.compose([Validators.minLength(4), Validators.maxLength(12), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
sexo: ['', Validators.required],
cpf: ['', Validators.compose([Validators.minLength(4), Validators.maxLength(50), Validators.pattern(('/^\d{3}\.\d{3}\.\d{3}\-\d{2}$/')), Validators.required])],
nascimento: ['', Validators.required],
email: ['', Validators.compose([Validators.minLength(4), Validators.maxLength(50), Validators.pattern('/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/'), Validators.required])],
telefone:['', Validators.compose([Validators.pattern('([0-9]{2}[0-9]{8})|([0-9]{2}[0-9]{9})'), Validators.required])],
endereco: ['', Validators.compose([Validators.minLength(4), Validators.maxLength(80), Validators.required])],
login: ['', Validators.required, Validators.minLength(4)],
senha:['', Validators.minLength(8)],
});
this.nome = this.formGroup.controls['nome'];
this.sexo = this.formGroup.controls['sexo'];
this.cpf = this.formGroup.controls['cpf'];
this.nascimento = this.formGroup.controls['nascimento'];
this.email = this.formGroup.controls['email'];
this.telefone = this.formGroup.controls['telefone'];
this.endereco = this.formGroup.controls['endereco'];
this.login = this.formGroup.controls['login'];
this.senha = this.formGroup.controls['senha'];
}
HTML-файл:
<ion-content padding>
<form [formGroup]="formGroup">
<ion-list>
<ion-item>
<ion-label floating>Nome:</ion-label>
<ion-input type="text" value="" [(ngModel)]="model.nome" formControlName="nome"></ion-input>
</ion-item>
<ion-item *ngIf="nome.hasError('required') && nome.touched">
<p>*Campo nome é obrigatório</p>
</ion-item>
<ion-list radio-group [(ngModel)]="model.sexo" formControlName="sexo">
<ion-item>
<ion-label>Masculino</ion-label>
<ion-radio value="masculino"></ion-radio>
</ion-item>
<ion-item>
<ion-label>Feminino</ion-label>
<ion-radio value="feminino"></ion-radio>
</ion-item>
</ion-list>
<ion-item *ngIf="sexo.hasError('required') && sexo.touched">
<p>*Campo sexo é obrigatório</p>
</ion-item>
<ion-item>
<ion-label floating>CPF:</ion-label>
<ion-textarea type="text" [(ngModel)]="model.cpf" formControlName="cpf"></ion-textarea>
</ion-item>
<ion-item *ngIf="cpf.hasError('required') && cpf.touched">
<p>*Campo CPF é obrigatório</p>
</ion-item>
<ion-item>
<ion-label floating>Data de Nascimento:</ion-label>
<ion-datetime displayFormat="DD/MM/YYYY" [(ngModel)]="model.nascimento" formControlName="nascimento"></ion-datetime>
</ion-item>
<ion-item *ngIf="nascimento.hasError('required') && nascimento.touched">
<p>*Campo data de nascimento é obrigatório</p>
</ion-item>
<ion-item>
<ion-label floating>E-mail:</ion-label>
<ion-textarea type="text" [(ngModel)]="model.email" formControlName="email"></ion-textarea>
</ion-item>
<ion-item *ngIf="email.hasError('required') && email.touched">
<p>*Campo email é obrigatório</p>
</ion-item>
<ion-item>
<ion-label floating>Telefone</ion-label>
<ion-textarea type="text" [(ngModel)]="model.telefone" formControlName="telefone"></ion-textarea>
</ion-item>
<ion-item *ngIf="telefone.hasError('required') && telefone.touched">
<p>*Campo telefone é obrigatório</p>
</ion-item>
<ion-item>
<ion-label floating>Endereço</ion-label>
<ion-textarea type="text" [(ngModel)]="model.endereco" formControlName="endereco"></ion-textarea>
<ion-item *ngIf="endereco.hasError('required') && endereco.touched">
<p>*Campo endereço é obrigatório</p>
</ion-item>
</ion-item>
<ion-item>
<ion-label floating>Login</ion-label>
<ion-textarea type="text" [(ngModel)]="model.login" formControlName="login"></ion-textarea>
</ion-item>
<ion-item *ngIf="login.hasError('required') && login.touched">
<p>*Campo login é obrigatório</p>
</ion-item>
<ion-item>
<ion-label floating>Senha</ion-label>
<ion-textarea type="password" [(ngModel)]="model.senha" formControlName="senha"></ion-textarea>
</ion-item>
<ion-item *ngIf="senha.hasError('required') && senha.touched">
<p>*Campo senha é obrigatório</p>
</ion-item>
<ion-item>
<button type="button" (click)="addMessage()" ion-button full>Submit</button>
</ion-item>
</ion-list>
</form>
</ion-content>