meta données pour cette page
Ceci est une ancienne révision du document !
| Retour au Dossier Organisationnel | |
| ANGULAR : Installation, Bonne pratique, Astuces... Validateurs DevExtreme (Validation Rules) |
Mise en place des dx-validator
Les différents dx-validator
A l'intérieur d'une zone de saisie devetrem (<dx-text-box>, <dx-check-box>, <dx-date-box>…), il est possible de mettre en place des validateurs de saisie
il se présente sous la forme
<dx-validator validationGroup="infoBanque">
<dxi-validation-rule type="custom" [validationCallback]="customValidator.isValidBicFromDx" message="Le BIC est invalide"/>
</dx-validator>
- infoBanque corresponds au nom d'un groupe de validateur (dans le cas général on peut utiliser le même pour tous ceux d'un composant simple
- custom corresponds au type de validation que l'on souhaite (cf plus loin)
- ici custom = un validateur maison (il est déclaré dans [validationCallback]=“customValidator.isValidBicFromDx”)
Pour aller plus loin :
- les validateurs “custum” doivent être déclaré dans la bibliothèque dans custom-validation-rule.ts et donc appelé via le service customValidatorService
Cas particulier des dates
HTML
<dx-date-box stylingMode="outlined" labelMode="static" label="Date de naissance" [(value)]="personne.dateNaissance"
[max]="today" displayFormat="dd/MM/yyyy" [useMaskBehavior]="true" [showClearButton]="true" [readOnly]="!this.DG.isDroitsFichierEdition()"
[style.background-color]="BC.mRGPD('personne','dateNaissance').couleur" (onValueChanged)="handlePersonneChanged()">
<dx-validator validationGroup="infoPersonne" name="Date de naissance">
<dxi-validation-rule type="range" [max]="today" [min]="minDateNaissance" message="'La date doit être après ' + (minDateNaissance | date:'yyyy')"/>
</dx-validator>
</dx-date-box>
TS
// Bornes de validation de la date de naissance
public today: Date = new Date();
public minDateNaissance: Date = new Date();
// Message dynamique pour le validateur
public rangeMessage: string = "";
ngOnInit(): void {
this.initValidationDates();
}
/**
* Initialise les bornes de temps pour le dx-date-box
*/
private initValidationDates() {
// 1. On fixe AUJOURD'HUI à la fin de la journée (23:59:59)
// Cela évite que la date du jour soit considérée comme "dans le futur"
this.today = new Date();
this.today.setHours(23, 59, 59, 999);
// 2. On calcule MINIMUM (Aujourd'hui - 120 ans)
this.minDateNaissance = new Date();
this.minDateNaissance.setFullYear(this.today.getFullYear() - 120);
this.minDateNaissance.setHours(0, 0, 0, 0);
// 3. On prépare le message d'erreur
this.rangeMessage = `La date doit être comprise entre ${this.minDateNaissance.getFullYear()} et aujourd'hui.`;
}