Comment valider et afficher une erreur pour l'entrée dans le contrôleur d'alerte dans Ionic 2 ou 3
let Prompt = Alert.create({
title: 'Alert input validation',
message: "How can I validate below input field?",
inputs: [
{
name: 'email',
placeholder: 'email'
},
],
buttons: [
{
text: 'Save',
handler: data => {
let validateObj = this.validateEmail(data);
if (!validateObj.isValid) {
alert(validateObj.message);
return false;
} else {
//make HTTP call
}
}
}
]
});
Quelqu'un a déjà mis à jour alertcontroller et a tiré une requête pour l'équipe Ionic. Je pense que la planification de l'équipe Ionic implémentera cela à l'avenir . https://github.com/ionic-team/ionic/pull/12541
J'ai besoin d'un peu de travail pour cette fonctionnalité de validation.
plnkr http://plnkr.co/edit/IBonfBJngky0h8UtMwMD?p=preview
Apprécier ton aide.
Pour l'instant, cette fonctionnalité n'a pas encore été implémentée. Vous pouvez voir ce problème Git .
J'ai utilisé la notification Toast
ici et je n'ai reçu aucune plainte à ce sujet de la part de mon client :)
Voici ce que j'ai fait.
_ {le gestionnaire done
du boxe d'alerte: _
{
text: 'Done',
handler: (data) => {
if (EmailValidator.isValid(data.email)) {
if (this.data) {
//my code
} else {
//my code
}
return true;
} else {
this.showErrorToast('Invalid Email');
return false;
}
}
}
_ {La méthode de Toast est comme ceci:
showErrorToast(data: any) {
let toast = this.toastCtrl.create({
message: data,
duration: 3000,
position: 'top'
});
toast.onDidDismiss(() => {
console.log('Dismissed toast');
});
toast.present();
}
UI
J'ai trouvé un moyen de contourner la situation en utilisant la méthode setMessage. Initialement, le message sera vide et lorsque l'utilisateur n'aura saisi aucune valeur, le message de validation sera rempli au clic. Trouvez l'extrait de code ci-dessous
let Prompt = Alert.create({
title: 'Alert input validation',
message: '',
inputs: [
{
name: 'email',
placeholder: 'email'
},
],
buttons: [
{
text: 'Save',
handler: data => {
let validateObj = this.validateEmail(data);
if (!validateObj.isValid) {
Prompt.setMessage('Your validation message');
return false;
} else {
//make HTTP call
}
}
}
]
});
Vous pouvez remplacer la police du message dans le fichier variable.scss comme ci-dessous
$alert-md-message-text-color:red;
Vous pouvez valider Email en utilisant REGEX.
voici un échantillon. remplacez cette fonction par la vôtre.
validateEmail(data) {
if( /(.+)@(.+){2,}\.(.+){2,}/.test(data.email) ){
return {
isValid: true,
message: ''
};
} else {
return {
isValid: false,
message: 'Email address is required'
}
}
}
j'espère que cela aidera quelqu'un.